IIS 8 - 自定义错误 400(错误请求)
IIS 8 - customize error 400 (Bad Request)
请求被 IIS 截获,它从未到达我的应用程序。
我希望我的错误处理来管理这个错误,而不是 IIS。这可能吗?
我试过很多东西,包括这些:
在我的Web.config中:<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>
This 也无济于事。
还有这个配置:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
<remove statusCode="400"/>
<error statusCode="400" path="http://www.google.com" responseMode="Redirect"/>
</httpErrors>
- 来自 MSDN(IIS 7,IIS 8 文档中没有任何内容):
You cannot customize the following HTTP error messages: 400, 403.9,
411, 414, 500, 500.11, 500.14, 500.15, 501, 503, and 505.
这里我们可以重现错误:
https://whosebug.com/ %%%(您应该复制整个 link,包括无效字符)。
看来你运气不好,因为以下线程已经显示:https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url
一种可能的解决方案是在您的负载均衡器(当然不会基于 IIS)上处理此错误代码。
查看我的回答
Custom error page configured in IIS for code 400 (bad request) is ignored
简而言之,使用 <httpErrors errorMode="Custom" ...
的重定向也已经适用于 HTTP 400/错误请求,并且可以自定义它,除了 IIS 内核阻止的错误(例如错误 URL)
我不确定它开始工作的 IIS 版本。我在 IIS 10 上测试过它。
示例https://whosebug.com/%
仍然无法运行,但是
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
将按预期工作(它不会被 IIS 内核阻止)
请求被 IIS 截获,它从未到达我的应用程序。
我希望我的错误处理来管理这个错误,而不是 IIS。这可能吗?
我试过很多东西,包括这些:
在我的Web.config中:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>
This 也无济于事。
还有这个配置:
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"> <remove statusCode="400"/> <error statusCode="400" path="http://www.google.com" responseMode="Redirect"/> </httpErrors>
- 来自 MSDN(IIS 7,IIS 8 文档中没有任何内容):
You cannot customize the following HTTP error messages: 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503, and 505.
这里我们可以重现错误:
https://whosebug.com/ %%%(您应该复制整个 link,包括无效字符)。
看来你运气不好,因为以下线程已经显示:https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url
一种可能的解决方案是在您的负载均衡器(当然不会基于 IIS)上处理此错误代码。
查看我的回答 Custom error page configured in IIS for code 400 (bad request) is ignored
简而言之,使用 <httpErrors errorMode="Custom" ...
的重定向也已经适用于 HTTP 400/错误请求,并且可以自定义它,除了 IIS 内核阻止的错误(例如错误 URL)
我不确定它开始工作的 IIS 版本。我在 IIS 10 上测试过它。
示例https://whosebug.com/%
仍然无法运行,但是
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
将按预期工作(它不会被 IIS 内核阻止)