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

IIS10下ASP.NET MVC(.NET4.5)网站故障排查请求

IIS10下ASP.NET MVC 4.5网站故障排查与修复

问题根源分析

两个错误的核心原因均与IIS路由模块未正确处理请求、默认文档配置缺失或IIS组件/应用池配置不匹配有关,以下是针对性修复步骤:

一、确认IIS必要组件配置

从提供的IIS功能截图,需确保以下组件已启用:

  • ASP.NET 4.5(对应.NET Framework 4.5)
  • 托管管道模式设置为集成(经典模式不兼容MVC路由)
  • URL重写模块(确保路由规则能被正确解析)

二、修复403.14 Forbidden错误(默认控制器未加载)

1. 配置默认文档

在IIS站点的「默认文档」中添加Default.aspx/Index.aspx,或直接在web.config的<system.webServer>节点下补充配置:

<defaultDocument>
  <files>
    <add value="Default.aspx" />
    <add value="Index.aspx" />
    <add value="Home/Index" /> <!-- 直接指定MVC默认路由 -->
  </files>
</defaultDocument>

2. 修正UrlRoutingModule版本

你的web.config中引用了.NET 3.5版本的路由模块,与.NET 4.5环境不兼容,替换为4.0版本:

<modules runAllManagedModulesForAllRequests="true">
  <add name="BasiceHttpModule" type="App.Base.BaseBaseHttpModule.BaseHttpModule, App.Base" />
  <!-- 替换为.NET 4.0版本的路由模块 -->
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>

确保runAllManagedModulesForAllRequests="true"已开启,该设置让所有请求经过托管模块处理,保证路由生效。

三、修复404.0 Not Found错误(控制器路由失效)

1. 检查应用池配置

  • 确认应用池的**.NET CLR版本**为v4.0.30319(对应.NET 4.5)
  • 托管管道模式必须设置为集成

2. 完善ExtensionlessUrlHandler配置

扩展无扩展名请求的支持范围,修改web.config的<handlers>节点:

<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

3. 验证路由配置有效性

确保项目中RouteConfig.cs的默认路由配置正确:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

并在Global.asax中已调用RouteConfig.RegisterRoutes(RouteTable.Routes);。

四、物理路径与权限检查

  1. 从applicationhost.config确认虚拟目录物理路径正确(如/Air对应C:\Sites\Air3\SolutionApp\air),路径必须存在。
  2. 授予IIS应用池身份(如IIS AppPool\localhost2119)对网站根目录及App_Data目录的读取权限,确保配置文件能被正常加载。

五、进阶排查手段

  • 启用IIS失败请求跟踪,查看请求处理的详细流程,定位具体错误节点。
  • 检查Windows事件查看器的「应用程序日志」,获取.NET运行时抛出的具体异常信息。
  • 验证服务器已正确安装.NET Framework 4.5,可通过控制面板「程序和功能」确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:39:49