部署后的MVC应用出现HTTP Error 404.0 - Not Found错误原因排查
ASP.NET MVC路由未正确加载:本地运行正常但IIS中失效,大概率是路由模块未被IIS识别。检查站点
web.config的<system.webServer><modules>节点,确认System.Web.Routing模块已注册,且runAllManagedModulesForAllRequests属性设置为true。IIS缺少ASP.NET 4.5支持组件:Server 2012 R2的IIS默认可能未启用ASP.NET 4.5。通过服务器管理器的“添加角色和功能”,在Web服务器(IIS)的“应用开发功能”中勾选ASP.NET 4.5;也可执行命令行工具
aspnet_regiis.exe -i(路径通常为C:\Windows\Microsoft.NET\Framework\v4.0.30319)重新注册ASP.NET。应用程序池配置错误:确保站点对应的应用程序池,.NET CLR版本设置为
v4.0(.NET 4.5属于v4.0框架分支),且托管管道模式为集成模式——经典模式下MVC路由无法正常工作。物理路径或权限问题:验证发布文件已完整部署到IIS站点指定的物理路径,同时确保应用程序池标识(如IIS_IUSRS、AppPoolIdentity)拥有该路径的读取权限,文件缺失或权限不足都会触发404。
URL重写模块缺失(若有自定义路由):如果应用依赖自定义路由规则,而IIS未安装URL重写模块,会导致路由解析失败,需通过Web平台安装器安装该模块。
发布遗漏核心文件:检查发布包是否包含
Global.asax、web.config,以及Views目录下对应的视图文件(如HelloWorld.cshtml),视图文件未发布也会引发404错误。
内容的提问来源于stack exchange,提问作者Victor Sotnikov

