.net 麻烦与<;httpErrors>;在web.config中查找MVC自定义错误和本地堆栈跟踪
在过去,我习惯于使用web.config中的customErrors元素来指定何时使用自定义错误页面向用户隐藏详细的异常信息 从我现在看到的情况来看,最好使用httpErrors。我已经参考了一些不同的资源,包括IIS文档如何实现我所需要的,但我似乎无法理解。我需要在web.config中指定以下要求:.net 麻烦与<;httpErrors>;在web.config中查找MVC自定义错误和本地堆栈跟踪,.net,iis,iis-7.5,custom-errors,.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 wh
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>
目前,我们有以下几点:
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时,我会得到蓝色的IIS错误摘要页面,而不是在本地看到堆栈跟踪的黄色死亡屏幕。下面显示了一个示例
在我意识到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>
这无疑解决了我同样恼人的问题