【发布时间】:2022-02-23 15:48:47
【问题描述】:
我们正在将 MVC/Angular 网站从 ASPNET Core 2.2 转换为 ASPNET Core 3.1。我已经让构建运行而没有错误或警告,但是当它启动时(在 Visual Studio 2019 中),它会查找 Home/Index,找到控制器正常,并查找 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
但是文件在那里!我完全迷惑了。
谁能告诉我发生了什么?
谢谢。
【问题讨论】:
-
能否请您出示您的
Startup和相关代码/迁移? -
你必须在启动时指定。配置服务:services.AddControllersWithViews();然后在配置中: .app.UseEndpoints(endpoints => { endpoints.MapDefaultControllerRoute();});类似的东西,或者你需要的任何设置。
-
John,我在 services.AddMvc 调用中使用了 EnableEndpointRouting=false 选项。我试图从 2.2 中进行最小的更改。如果我没有这样做或没有进行您建议的更改,我会得到一个 InvalidOp 异常,而不是缺少视图。但是,作为记录,我也尝试了您建议的更改,结果相同 - 网站运行,但找不到视图,即使它在那里。
-
itminus,我很欣赏 Startup 可能是相关的,但出于安全考虑,我禁止上传代码。问题是该启动在 2.2 中运行良好,当我将项目框架更改为 netcoreapp3.1 时无法运行。如果有关于这家初创公司的具体情况,我或许可以回答。
标签: c# asp.net-core asp.net-core-mvc