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

ASP.NET站点IIS下自定义404页面配置异常问题求助

IIS ASP.NET站点自定义404错误页部分失效的原因及解决方法

核心原因

问题出在ASP.NET错误处理机制与IIS httpErrors的优先级差异:

  • 当请求包含.aspx扩展名(哪怕文件不存在),ASP.NET运行时会优先接管错误处理,而非使用IIS的httpErrors配置。你当前只配置了IIS层面的错误页,ASP.NET自身的错误处理仍用默认设置,导致这类请求跳转到IIS默认404。
  • 而page.aspx__somethingwrong__这类URL,因为扩展名不是标准的.aspx,ASP.NET运行时不处理,直接由IIS接管,所以你的自定义404生效。

解决步骤

1. 配置ASP.NET自定义错误(system.web节点)

在web.config中添加<customErrors>配置,覆盖ASP.NET的默认错误处理:

<system.web>
  <customErrors mode="On" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="/mycustompath/404.html" />
  </customErrors>
</system.web>
  • mode="On":开启自定义错误,生产环境建议用这个;测试环境可改用RemoteOnly仅对外展示自定义页。
  • redirectMode="ResponseRewrite":直接返回自定义页内容,保持HTTP 404状态码(避免跳转成302)。

2. 强化IIS httpErrors配置

修改现有httpErrors节点,添加existingResponse="Replace"强制替换所有404响应:

<httpErrors existingResponse="Replace">
  <remove statusCode="404" subStatusCode="-1" />
  <error statusCode="404" prefixLanguageFilePath="" path="/mycustompath/404.html" responseMode="ExecuteURL" />
</httpErrors>

3. 检查IIS站点级别设置

打开IIS管理器,找到你的站点→错误页:

  • 确保404错误的设置是“继承自上级或站点默认值”,而非手动指定了默认404页。
  • 如果有手动设置,右键选择“重置为继承”,让web.config的配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:40:41