Response.StatusCode和Internet Explorer - 显示自定义消息?

时间:2008-09-08 21:34:16

标签: asp.net http internet-explorer-7

我正在我的Application_Error处理程序中实现HttpRequestValidationException,如果可能,我想显示一条自定义消息。

现在,我正在考虑StatusCode。在我目前的例子中,它发送了200,我认为不应该这样做。我想发送(恕我直言)更恰当的400 Bad Request。但是,与此同时,我想使用Response.Write来输入自定义消息。 Firefox正确显示它,但IE7为我提供了默认无用的Internet Explorer错误页面。

一方面,我猜Internet Explorer只假设所有内容<> 200根本没有任何“好”的内容,而RFC is not really clear在这里。

所以我只是想知道,是否发送了由HttpRequestValidationException引起的错误页面的HTTP 200好的做法?有没有好的选择?

3 个答案:

答案 0 :(得分:4)

HTTP 200响应代码不表示错误。它表明一切都很好。您不应该使用200响应代码来处理错误。

如果响应小于512字节,Internet Explorer将显示其“友好错误”页面。以下是有关此问题的更多信息:http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx

答案 1 :(得分:1)

不,这当然不是一个好习惯。 2XX状态代码表示请求有效(除其他外)。这与提出HttpRequestValidationException相反。

我不知道如何使IE正常运行。比发送200更好的方法是将其重定向到错误页面,但仍然远非完美。

答案 2 :(得分:1)

当响应为4xx或5xx时,Internet Explorer会显示他们称之为“友好的HTTP错误消息”。用户可以在IE的Tools.Options.Advanced [浏览]对话框中关闭此选项。

为错误页面发送200通常是不好的做法。一种替代方法是拥有一个有效的“错误”页面假设以显示错误消息(因此200可以),然后使用3xx重定向到该页面。