对于我的网站,我配置了一些自定义错误页面。如果我生成 404,则重定向工作正常。当达到 400 时,会显示“错误请求”文本而不是配置的 URl。
作为测试,我将 URL 从 404 复制到 400。没有变化。然后我将重定向更改为文件。不用找了。
有任何想法吗?
对于我的网站,我配置了一些自定义错误页面。如果我生成 404,则重定向工作正常。当达到 400 时,会显示“错误请求”文本而不是配置的 URl。
作为测试,我将 URL 从 404 复制到 400。没有变化。然后我将重定向更改为文件。不用找了。
有任何想法吗?
我遇到了同样的问题,并在 msdn http://msdn.microsoft.com/en-us/library/ms690497.aspx上找到了这个
我不确定这是否适用于 IIS6,但它肯定适用于 IIS7。您需要配置httpErrors,而不是自定义错误
<system.webServer>
<httpErrors errorMode="Custom">
<error statusCode="400" subStatusCode="-1" path="_path" responseMode="Redirect" />
</httpErrors>
</system.webServer>
也许这就是你的答案:这个微软网站说在 IIS6 中重新配置自定义错误
以下错误不可自定义:400、403.9、411、414、500、500.11、500.14、500.15、501、503 和 505。
尝试
Response.TrySkipIisCustomErrors = true;
或者
<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</configuration>
检查该部分的 web.config 文件中的customErrors
内容。它有一个defaultRedirect
属性,以及一个error
带有redirect
属性的子标签。这些可能与您在 IIS 中的其他配置设置冲突。
在 2020 年,它将像这样工作web.config
:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="400" subStatusCode="-1" />
...
<error statusCode="400" prefixLanguageFilePath="YOUR_PATH" path="YOUR_HTML_FILE" responseMode="File" />
...
状态码
必需的整数属性。
指定要为其创建自定义错误消息的 HTTP 状态代码的编号。可接受的值是从 400 到 999。
https://docs.microsoft.com/en-us/previous-versions/iis/settings-schema/ms689487(v=vs.90)
请注意,像https://stackoverflow.com/%这样的错误 URL仍然无法自定义,并且会收到来自 IIS 内核的简单错误请求消息(错误代码 400)。
更多关于这里 https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url