ASP.Core找不到视图
本文关键字:视图 找不到 Core ASP | 更新日期: 2023-09-27 18:01:51
我有一个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文件来运行应用程序,一切似乎都很正常。我仔细检查了一下,服务有足够的权限,视图也在正确的位置。
但是!当服务在win32文件夹中寻找另一个文件时,我遇到了一种情况,因为我犯了一个错误,使用Directory.GetCurrentDirectory()
而不是Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
来查找当前文件夹。有没有可能犯了类似的错误?
当前的问题确实与前者相似。事实证明,我应该在Startup.cs中使用相同的Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
:Main
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文件夹而不是可执行文件的文件夹。