1

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

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

一方面,我猜 Internet Explorer 只是假设所有 <> 200 的内容都没有任何“好”的内容,而RFC 在这里并不是很清楚

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

4

3 回答 3

4

HTTP 200 响应代码不表示错误。它表明一切正常。您不应该使用 200 响应代码来表示错误。

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

于 2008-09-08T22:05:02.570 回答
1

不,这当然不是一个好习惯。2XX 状态码意味着(除其他外)请求是有效的。这与引发 HttpRequestValidationException 正好相反。

遗憾的是,我不知道如何使 IE 行为正确。比发送 200 稍微好一点的方法是将其重定向到错误页面,但仍远非完美。

于 2008-09-08T21:49:22.873 回答
1

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

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

于 2008-09-08T21:59:49.930 回答