自定义错误400(错误请求)以避免IIS-8拦截它

monwx1rj  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(167)

IIS会拦截该请求,但它从未命中我的应用程序。
我想让我的错误处理来管理这个错误,而不是IIS。这可能吗?
我试过很多方法,包括这些:
1.在我的Web.config中:<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>
1.此配置还包括:

<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
    <remove statusCode="400"/>
    <error statusCode="400" path="http://www.google.com" responseMode="Redirect"/>
</httpErrors>

1.从MSDN(IIS 7,IIS 8文档中没有任何内容):
您无法自订下列HTTP错误消息:400、403.9、411、414、500、500.11、500.14、500.15、501、503和505中的至少一个的组合。

在这里我们可以复制错误:

https://stackoverflow.com/ + %%%(您应该复制整个链接,包括无效字符)。

zmeyuzjn

zmeyuzjn1#

看起来你运气不好,下面的线程已经显示:https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url
一种可能的解决方案是在负载平衡器(当然不会基于IIS)上处理此错误代码。

vh0rcniy

vh0rcniy2#

请参阅我对IIS中配置的自定义错误页的回答,因为代码400(错误请求)被忽略
简而言之,使用<httpErrors errorMode="Custom" ...的重定向也适用于HTTP 400 / bad请求,并且除了IIS内核阻止的错误(例如bad URL)之外,用户可以对其进行自定义
我不确定它开始工作的IIS版本。我在IIS 10上测试了它。
示例https://stackoverflow.com/%仍然不起作用,但是
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);将按预期工作(不会被IIS内核阻止)

相关问题