You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6.0 MVC本地正常,部署IIS后报HTTP 500错误

ASP.NET Core 6.0 MVC发布到IIS后视图找不到的解决办法

问题概述

本地运行正常的ASP.NET Core 6.0 MVC应用,通过Web Deploy发布到IIS后显示HTTP 500错误,服务器事件查看器抛出以下错误:

Exception: System.InvalidOperationException: The view 'Index' was not found. The following locations were searched: /Views/Admin/Index.cshtml /Views/Shared/Index.cshtml /Pages/Shared/Index.cshtml

补充背景:

  • 服务器原本部署有ASP.NET Core 5应用,已安装.NET Core 6 Hosting Bundle
  • 曾尝试在项目文件添加预编译视图配置,无效果:
<PropertyGroup>
    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
</PropertyGroup>
  • Web Deploy配置(已脱敏):
<?xml version="1.0" encoding="utf-8"?>

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://example.url.ca:443/</SiteUrlToLaunchAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <ProjectGuid>12345a12-a123-1aaa-a123-12356a1aa1aa</ProjectGuid>
    <SelfContained>false</SelfContained>
    <MSDeployServiceURL>https://example:1234/msdeploy.axd</MSDeployServiceURL>
    <DeployIisAppPath>ExampleMVC</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <EnableMsDeployAppOffline>True</EnableMsDeployAppOffline>
    <UserName>EXAMPLE\EX123</UserName>
    <_SavePWD>True</_SavePWD>
    <TargetFramework>netcoreapp6.0</TargetFramework>
    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
  </PropertyGroup>
</Project>

排查与解决步骤

1. 验证服务器发布目录的文件完整性

  • 登录服务器,找到IIS站点对应的物理路径,确认Views/Admin/Index.cshtml文件是否存在。Web Deploy可能因权限或同步问题漏掉视图文件。
  • 如果文件缺失,手动复制本地项目的Views目录到服务器发布目录,重启IIS站点后测试。

2. 调整Razor视图编译配置

ASP.NET Core 6中,MvcRazorCompileOnPublish已被更适配的配置替代,在项目文件中替换为以下内容后重新发布:

<PropertyGroup>
    <PublishRazorCompileOnPublish>true</PublishRazorCompileOnPublish>
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
</PropertyGroup>

3. 检查IIS应用池配置

  • 确保应用池的.NET CLR版本设置为无托管代码(ASP.NET Core应用必须使用此配置)。
  • 验证应用池身份拥有发布目录的读写权限,重点检查Views目录的权限设置。

4. 排查Web Deploy文件排除规则

  • 查看项目的发布配置文件(.pubxml),确认是否存在排除.cshtml文件的规则,如有则移除。
  • 临时将SkipExtraFilesOnServer设为True发布一次,再改回False重新推送,强制同步所有文件。

5. 启用详细错误日志调试

在Program.cs中临时添加详细错误输出(上线后记得关闭),获取更精准的错误信息:

var builder = WebApplication.CreateBuilder(args);
// 原有配置代码...
var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
    // 临时启用详细错误页
    app.UseDeveloperExceptionPage();
}
// 原有中间件配置...

6. 确认控制器路由与视图返回逻辑

检查Admin控制器的Index方法,确保返回语句为return View();,未指定错误的视图名称或路径。


内容的提问来源于stack exchange,提问作者pr0v0k3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:30:30