有关MVC自定义错误和本地堆栈跟踪</httperrors>的web.config中的<httperrors>问题

时间:2014-08-12 18:12:52

标签: .net iis iis-7.5 custom-errors

过去,我习惯使用web.config中的 customErrors 元素来指定何时使用自定义错误页面来隐藏用户的详细异常信息。

从我现在看来,最好使用 httpErrors 。我已经引用了几个不同的资源,包括IIS文档如何完成我需要的东西,但我似乎无法弄明白。我需要在web.config中指定的要求如下:

1) If HTTP 404 Error
     a) If Local, just return IIS 404 or Yellow Screen of Death (YSOD) or whatever. (It doesn't really matter)
     b) If not local, execute URL /Path/To/My/404/ErrorMVCAction

2) If ANY OTHER HTTP ERROR
     a) Use static error.htm page.

目前,我们有以下内容:

<httpErrors errorMode="DetailedLocalOnly" existingResponse="Replace">
        <remove statusCode="404" />
        <error statusCode="404" 
               prefixLanguageFilePath="" 
               path="/Path/To/My/404/ErrorMVCAction" 
               responseMode="ExecuteURL" />
</httpErrors>

当我导航到一个不存在的页面并获得404时,我得到了我的自定义错误页面(我通过将errorMode更改为'Custom'来测试它。但是,当500出现时,而不是获得黄色我可以在本地看到堆栈跟踪的死亡屏幕,我收到了Blue IIS Error Summary页面。下面显示了一个示例。

enter image description here

2 个答案:

答案 0 :(得分:4)

在我意识到httpErrors属性existingResponse必须设置为 existingResponse =“PassThrough”之前,我遇到了同样令人沮丧的问题。因此,请尝试将配置更改为:

<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
        <remove statusCode="404" />
        <error statusCode="404" 
               prefixLanguageFilePath="" 
               path="/Path/To/My/404/ErrorMVCAction" 
               responseMode="ExecuteURL" />
</httpErrors>

这无疑为我解决了同样烦人的问题。

答案 1 :(得分:-2)

确保已设置

<customErrors mode="On"/>

然后只有自定义页面需要工作