Jam*_*emp 4 asp.net custom-errors integrated-pipeline-mode iis-8.5
我在 IIS 8.5 上运行的(Web 窗体)站点上工作,并且目前正在设置 404 和 500 的错误处理。
我已经有了system.web>customErrors设置,但是由于我们在集成模式/较新版本的 IIS 下运行,因此它是从system.webServer> 中提取的httpErrors。
使用 IIS GUI,我选择在站点上用静态 HTML 文件替换标准 IIS 错误页面:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath=""
path="/problem.html" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然显示了正确的错误页面,但不是返回 404,而是返回 200,对于 500 个错误,返回 302 后跟 200。
对于旧版本的 IIS 或未在集成模式下运行的 IIS,您可以redirectMode="ResponseRewrite"在customErrors元素上进行设置,这将解决此问题。
我试过设置existingResponse上httpErrors对所有三个可用的选项,以及尝试更新的设置responseMode="File",但这些什么也没有改变。
有没有办法对httpErrrors元素做类似的事情?或者我是否坚持将错误指向 ASP.NET 页面并从那里返回适当的错误?
谢谢!
小智 5
要解决这个问题,您可以将此配置设置到<httpErrors>您的 WebConfig 文件中。像这样:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear/>
<error statusCode="404" path="/WebForms/Index.aspx" responseMode="File"/>
</httpErrors>
<system.webServer/>
Run Code Online (Sandbox Code Playgroud)
该responseMode=File会保留原来的错误代码,并显示静态页面。
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |