gpt4 book ai didi

c# - ASP.NET Core 找不到 View

转载 作者:太空狗 更新时间:2023-10-29 17:51:39 25 4
gpt4 key购买 nike

我有一个 ASP.NET Core 应用程序。该应用程序需要由 windows 服务启动。当服务运行应用程序时,出现以下错误:

InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml
EnsureSuccessful
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext
ThrowForNonSuccess
HandleNonSuccessAndDebuggerNotification
MoveNext

但是,如果我通过单击 exe 文件运行应用程序,一切似乎都是正常的。我再次检查,该服务有足够的权限,并且 View 位于正确的位置。

但是!当服务在 win32 文件夹中的某个地方寻找另一个文件时,我遇到了这种情况,因为我犯了一个错误并使用 Directory.GetCurrentDirectory() 而不是 Path.GetDirectoryName(System.Reflection. Assembly.GetEntryAssembly().Location) 查找当前文件夹。有没有可能犯了类似的错误?

最佳答案

现在的问题确实和前者类似。事实证明,我应该在 Startup.cs:Main 中使用相同的 Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)

var host = new WebHostBuilder()
.UseKestrel()
.UseConfiguration(config)
.UseContentRoot(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location))
.UseStartup<Startup>()
.Build();

默认情况下 Directory.GetCurrentDirectory() 用作 UseContentRoot(.) 的参数。当 ConfigurationBuilder 被调用时,同样的操作必须在前面几行代码中执行。

问题的根源是 Windows 服务是从 win32 文件夹调用的,因此 Directory.GetCurrentDirectory() 给出的是 win32 文件夹而不是可执行文件的文件夹。

关于c# - ASP.NET Core 找不到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38865362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com