禁用5xx和4xx HTTP状态码的IIS 7.5服务器错误响应

有什么办法可以防止IIS自动覆盖返回500或400范围内的状态代码的Web应用程序的输出?

举个例子,在ColdFusion中,我可以创build以下页面:

<cfheader statuscode="500" statustext="Error"> Sorry, an error occurred. 

行为应该是我看到一个页面,上面写着“抱歉,发生了错误”。 并在标题中看到状态码是500。

相反,我看到:

 Server Error 500 - Internal server error. There is a problem with the resource you are looking for, and it cannot be displayed. 

在可爱的IIS风格。

我试着只是删除了500个自定义状态页面,但这只是导致:

 The page cannot be displayed because an internal server error has occurred. 

没有任何可爱的造型。

看起来像任何页面返回的代码不在200或300范围内发生这种情况。

这是在另一个问题回答: IIS7劫持我的Coldfusion错误页面

似乎解决scheme正在更改configuration,以便IIS忽略该错误,并允许它通过,因此设置

  <httpErrors existingResponse="PassThrough" /> 

所以解决scheme是改变IIS的行为,这是幸运的,因为要求每个现有的Web应用程序服务器改变他们的行为将是非常愚蠢的。

更新

请在另一个类似的问题中看到我的更新的答案,以找出为什么以及如何没有可行的答案来解决这个问题

显然有一种方法可以使用Response.TrySkipIisCustomErrors来做到这一点。 下面的例子来自一个aspx页面,但是可以适应你的用例。

这下面的网页内容太广泛,不能在这里复制。

http://www.west-wind.com/weblog/posts/2009/Apr/29/IIS-7-Error-Pages-taking-over-500-Errors

以下是确定的工作原理:1.打开网站或应用程序的错误页面2.点击右侧操作中的编辑function设置3.select详细错误并保存