如何将ASP.NET Core 5 MVC完整项目部署到IIS并解决视图文件缺失问题
ASP.NET Core 5 MVC 发布到IIS缺失Areas等视图资源的解决方法
核心调整步骤
- 右键Visual Studio中的项目,选择「编辑项目文件」打开
.csproj配置文件,在<Project>根节点下添加如下配置,明确指定需要发布的视图资源,同时排除源代码文件:
<ItemGroup> <!-- 包含Areas目录下所有Razor视图、视图组件文件 --> <Content Include="Areas/**/*.cshtml" CopyToPublishDirectory="PreserveNewest" /> <!-- 排除Areas目录下所有C#源代码文件,避免发布到服务器 --> <Content Remove="Areas/**/*.cs" /> <Compile Include="Areas/**/*.cs" CopyToPublishDirectory="Never" /> </ItemGroup>
- 若需要预编译Razor视图(发布后不会出现.cshtml源文件,所有视图编译进程序集,性能更高),可以在
.csproj的<PropertyGroup>节点下添加配置:
<RazorCompileOnPublish>true</RazorCompileOnPublish>
- 检查当前使用的发布配置文件(
.pubxml),确认没有添加排除Areas或视图文件的过滤规则,保存所有配置后重新执行发布操作即可。
异常原因说明
发布到Azure正常是因为Azure默认发布配置会自动识别并包含所有ASP.NET Core MVC相关的静态资源和视图文件,而自定义文件系统发布到VPS的配置默认会存在资源过滤规则,导致非显式指定的Areas下的视图资源被忽略。
内容的提问来源于stack exchange,提问作者Guto Barroso
相关产品推荐
相关产品推荐

