过去,我习惯使用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页面。下面显示了一个示例。
答案 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"/>
然后只有自定义页面需要工作