You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将ASP.NET MVC从IIS Express切换至Local IIS时出现404资源加载失败错误

解决Local IIS托管ASP.NET MVC仅主页可访问的404问题

老哥,这种情况我经手过好多次,核心问题基本都围绕IIS的路由支持、模块配置或者应用池设置来的,给你列几个针对性的排查和解决步骤,你挨个试:

1. 确认URL重写模块已安装

ASP.NET MVC的路由规则完全依赖IIS的URL重写模块,没装的话除了静态主页,其他控制器路由都会直接返回404。

  • 打开IIS管理器,选中服务器节点,点击右侧的「模块」,查找UrlRewriteModule
  • 如果找不到,去控制面板→程序和功能→「启用或关闭Windows功能」,展开「Internet Information Services」→「万维网服务」→「应用程序开发功能」,勾选「URL重写」后完成安装。

2. 匹配应用池的.NET版本与模式

应用池的配置不对是重灾区:

  • 右键你的IIS应用→「管理应用程序」→「高级设置」,查看当前绑定的应用池;
  • 找到该应用池,右键→「高级设置」:
    • .NET CLR版本必须和你的MVC项目版本匹配(比如项目用.NET Framework 4.8就选v4.0.30319);
    • 托管管道模式必须设为「集成」,经典模式不支持MVC的路由机制。

3. 检查Web.config的关键配置

打开项目的Web.config,确认以下几点:

  • 确保system.webServer节点下有这个配置,让所有请求都经过ASP.NET模块:
    <modules runAllManagedModulesForAllRequests="true" />
    
  • 验证路由注册是否正确:如果是传统MVC项目,检查Global.asax里的RegisterRoutes方法是否有默认路由:
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    
    如果是Owin/ASP.NET MVC 5+,检查Startup.cs里的路由配置是否完整。

4. 修复Handler Mappings与ASP.NET注册

有时候IIS的ASP.NET映射会出问题:

  • 在你的IIS应用下,点击右侧的「处理程序映射」,确认ExtensionlessUrlHandler-Integrated-4.0是启用状态;
  • 如果找不到这个映射,打开管理员权限的命令提示符,运行对应版本的ASP.NET注册命令:
    %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
    
    64位系统请替换为Framework64目录。

5. 启用IIS的ASP.NET功能

如果是第一次用Local IIS,可能对应的Windows功能没开:

  • 回到「启用或关闭Windows功能」,展开「Internet Information Services」→「万维网服务」→「应用程序开发功能」,勾选对应版本的「ASP.NET」(比如ASP.NET 4.8),保存后重启IIS。

要是这些步骤都试过还是没解决,你可以把Web.config里的system.webServer和路由注册代码贴出来,再补充下应用池的具体配置,我帮你再深挖问题。

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

火山引擎 最新活动