有什么办法可以防止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详细错误并保存