IIS 8 - 自定义错误400(错误请求)

时间:2015-04-13 14:26:33

标签: iis error-handling asp.net-mvc-5

请求被IIS截获,它永远不会到达我的应用程序。

我希望我的错误处理能够管理此错误,而不是IIS。这可能吗?

我尝试过很多东西,包括:

  1. 在我的Web.config中:<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors>

  2. This也没有帮助。

  3. 此配置:

  4. <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文档中没有任何内容):
    2.   

      您无法自定义以下HTTP错误消息:400,403.9,   411,414,500,500.11,500.14,500.15,501,503和505。

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

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

2 个答案:

答案 0 :(得分:1)

您似乎对此感到不满,因为以下主题已经显示:https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url

一种可能的解决方案是在负载均衡器处理此错误代码(当然不会基于IIS)。

答案 1 :(得分:1)

请参阅我的回答 Custom error page configured in IIS for code 400 (bad request) is ignored

简而言之,使用const { responseCode, results } = await getPurchaseHistoryAsync(true); 进行的重定向也已经适用于HTTP 400 /错误的请求,并且可以自定义它,但被IIS内核阻止的错误(例如错误的URL)

我不确定它开始起作用的IIS版本。我在IIS 10上进行了测试。

示例<httpErrors errorMode="Custom" ...仍然无效,但是

https://stackoverflow.com/% 将按预期运行(不会被IIS内核阻止)