.NET 7中Area视图存在却找不到,仅RuntimeCompilation模式可用
问题根源与解决方案
核心原因
你的项目.csproj文件存在错误配置:你将视图文件从Content类型移除,并标记为None类型。
在ASP.NET Core中:
- 启用
AddRazorRuntimeCompilation()时,系统直接读取源码目录中的视图文件,所以能正常找到; - 但在生产环境或移除该配置后,系统依赖构建过程中被标记为
Content的文件(这类文件会被复制到输出目录或嵌入程序集),而标记为None的文件不会被包含到构建输出中,因此运行时找不到视图。
从你的.csproj可以看到,Areas\BackOffice\Views\Users\Index.cshtml正好被包含在错误配置里:
<Content Remove="Areas\BackOffice\Views\Users\Index.cshtml" /> <Watch Remove="Areas\BackOffice\Views\Users\Index.cshtml" /> <None Include="Areas\BackOffice\Views\Users\Index.cshtml" />
解决步骤
打开项目的
.csproj文件,删除以下所有相关节点:- 包含
<Content Remove>的整个<ItemGroup> - 包含
<Watch Remove>的整个<ItemGroup> - 包含
<None Include>的整个<ItemGroup>
- 包含
保留默认文件配置即可,ASP.NET Core Web项目会自动将
Views目录下的.cshtml文件识别为Content类型,无需手动配置。清理项目(右键项目 → 清理),然后重新构建、发布。
额外验证
你的Area路由配置是正确的:
- 控制器标记了
[Area("BackOffice")] - 默认路由模板
{area=Reporting}/{controller=Reports}/{action=Index}/{id?}支持多Area路由
错误提示已经在搜索/Areas/BackOffice/Views/Users/Index.cshtml,说明路由逻辑正常,问题确实出在文件构建配置上。
内容的提问来源于stack exchange,提问作者Korpin
相关产品推荐
相关产品推荐

