.net 麻烦与<;httpErrors>;在web.config中查找MVC自定义错误和本地堆栈跟踪

.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

在过去,我习惯于使用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>
目前,我们有以下几点:

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>

这无疑解决了我同样恼人的问题