C# MVC can';转换到ASPNET Core 3.1后找不到视图

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,网站运行正常,然

我们正在将一个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

但是文件在那里!我完全困惑了

谁能告诉我发生了什么事


谢谢。

检查有关路线调整的部分-请参阅

您很可能需要在
启动
类中更改此选项:

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>