C# MVC can';转换到ASPNET Core 3.1后找不到视图
我们正在将一个MVC/Angular网站从ASPNET Core 2.2转换为ASPNET Core 3.1。我已经让构建在没有错误或警告的情况下运行,但是当它启动时(在VisualStudio2019中),它会查找主/索引,发现控制器很好,并查找主/索引视图,但即使它在那里(在Views/Home/Index.cshtml中),也无法找到它,就在它应该在的地方(就在我们开发这个网站的几个月里,我已经将它简化为一个测试用例,我可以将web项目文件设置为netcoreapp2.2,网站运行正常,然后停止它并将其更改为netcoreapp3.1,没有其他更改,它失败了。如果文件此处缺失: System.InvalidOperationException:未找到视图“索引”。已搜索以下位置: /Views/Home/Index.cshtml /视图/Shared/Index.cshtml /Pages/Shared/Index.cshtml 但是文件在那里!我完全困惑了 谁能告诉我发生了什么事C# MVC can';转换到ASPNET Core 3.1后找不到视图,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我们正在将一个MVC/Angular网站从ASPNET Core 2.2转换为ASPNET Core 3.1。我已经让构建在没有错误或警告的情况下运行,但是当它启动时(在VisualStudio2019中),它会查找主/索引,发现控制器很好,并查找主/索引视图,但即使它在那里(在Views/Home/Index.cshtml中),也无法找到它,就在它应该在的地方(就在我们开发这个网站的几个月里,我已经将它简化为一个测试用例,我可以将web项目文件设置为netcoreapp2.2,网站运行正常,然
谢谢。检查有关路线调整的部分-请参阅 您很可能需要在
启动
类中更改此选项:
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
因此:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
我们刚刚遇到了一个类似的问题:在将web应用程序从core 2.2升级到3.1后,找不到部分视图。我们的解决方案是替换这个
services.AddMvc();
…与
services.AddControllersWithViews();
services.AddRazorPages().AddRazorRuntimeCompilation();
尽管我相信.AddMvc()相当于.AddControllersWithViews()加上.AddRazorPages,但它不包括开箱即用的运行时编译部分。替换
`app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area=User}/{controller=Home}/{action=Index}/{id?}");
});`
与
从.Net Core 2迁移到.Net Core 3时,他们将app.UseMvc替换为app.UseEndponts
另外,如果您有其他视图文件夹,请将\u ViewImports.cshtml和\u ViewStart.cshtml从现有视图文件夹复制到其他视图文件夹。我也遇到了同样的问题
对我来说,这是项目文件中的内容:
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>false</RazorCompileOnPublish>
false
假的
我必须删除它。您可以显示您的
启动
和相关代码/迁移吗?您必须在Startup.configureservices:services.AddControllersWithViews()中指定,然后在Configure:.app.UseEndpoints(endpoints=>{endpoints.MapDefaultControllerRoute();})中指定;诸如此类,或者您需要的任何设置。John,我在services.AddMvc调用中使用了EnableEndpointRouting=false选项。我试图从2.2中进行最小的更改。如果我没有这样做或进行您建议的更改,我将得到一个InvalidOp异常,而不是缺少视图。但是,作为记录,我还尝试了changes你的建议,同样的结果-网站运行,但它找不到视图,即使它在那里。it减去,我理解启动可能是相关的,但出于安全考虑,我被禁止上传代码。问题是,启动在2.2中运行良好,当我将项目框架更改为netcoreapp3.1.I时不起作用如果这家初创公司有什么特别之处,我或许可以回答。
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>false</RazorCompileOnPublish>