[英]MVC can't find Views after converting to ASPNET Core 3.1
我們正在將 MVC/Angular web 站點從 AS.NET Core 2.2 轉換為 AS.NET Core 3.1。 我讓構建運行時沒有錯誤或警告,但是當它啟動時(在 Visual Studio 2019 中),它會查找 Home/Index,找到 controller 正常,並查找 Home/Index 視圖,但它無法找到它,即使它在那里(在 Views/Home/Index.cshtml 中),就在它應該在的地方(而且在我們開發這個網站的幾個月里它一直在的地方。我現在把它簡化為一個測試如果我可以將 web 項目文件設置為 .netcoreapp2.2 並且站點運行正常,然后停止它並更改為 .netcoreapp3.1,沒有其他更改,它失敗了。這些錯誤正是你所期望的,如果文件丟失:
System.InvalidOperationException:未找到視圖“索引”。 搜索了以下位置:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml
/Pages/Shared/Index.cshtml
但是文件在那里。 我完全不知所措。
誰能告訴我發生了什么事?
謝謝。
我們剛剛遇到了類似的部分問題:將 Web 應用程序從核心 2.2 升級到 3.1 后,找不到部分視圖。 我們的解決方案是更換這個......
services.AddMvc();
... 和 ...
services.AddControllersWithViews();
services.AddRazorPages().AddRazorRuntimeCompilation();
雖然我相信 .AddMvc() 等同於 .AddControllersWithViews() 加上 .AddRazorPages 它不包括開箱即用的運行時編譯部分。
查看路由調整部分 - 參見Migrate from ASP.NET Core 2.2 to 3.0
您很可能需要在Startup
類中更改此設置:
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
接着就,隨即:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
代替
`app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area=User}/{controller=Home}/{action=Index}/{id?}");
});`
和
`app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});`
他們遷移從.net的Core 2到.NET核心3時更換app.UseMvc到app.UseEndponts。
此外,如果您有另一個視圖文件夾,請將_ViewImports.cshtml和_ViewStart.cshtml從現有視圖文件夾復制到其他視圖文件夾。
我有同樣的問題。
對我來說,它在項目文件中是這樣的:
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>false</RazorCompileOnPublish>
我不得不刪除它。
首先,你必須安裝 package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
:
install-package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
然后在startup.cs中的services.AddControllersWithViews()
行之后添加AddRazorRuntimeCompilation()
:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.