14

设置Response.StatusCode = 404在 IE8 和 Chrome 下都不提供内容?虽然我觉得很奇怪,但它在 Mozilla 中有效!

做最简单的事情 - 空的 asp.net Web 应用程序项目和空的 Default.aspx 页面。在 Page_Load 事件中使用以下内容:

protected void Page_Load( object sender, EventArgs e )
{
    Response.StatusCode = 404;
}

这有效地将当前请求的状态码设置为 404,这一点毫无疑问。在 IE8 或 Chrome 下渲染时,或者也可能是其他一些浏览器 - 我没有测试过,实际页面根本不显示。这些浏览器显示其默认的 404 错误页面(不是默认的 IIS 自定义错误)。IE8 中的示例:

The webpage cannot be found 
 HTTP 404  
   Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...

我真正想做的是提供带有 404 错误代码的 404 错误页面,这实际上会告诉浏览器或爬虫或任何人该页面不存在 - 不仅显示一些带有状态消息 200 OK 的花哨的自定义错误消息.

使用提琴手表明我实际上是在服务请求,但浏览器完全忽略了它?!

我的问题 - 我如何设置 404 状态代码并仍然呈现页面内容?示例 - http://www.intel.com/invalidpage.wow。使用 fiddler 显示此页面提供 404 状态代码。

4

2 回答 2

10

默认情况下,如果错误响应小于可配置的量,IE 将显示它的自定义错误页面。我相信数量是 512 字节,但我会尝试对此进行确认。因此,您需要做的就是在您的回复中添加更多内容。

编辑:这篇博文描述了限制。其中一条评论显示了用于更改这些值的注册表项设置。关键是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\ErrorThresholds

于 2009-09-24T21:41:34.400 回答
0

您不提供内容,而是在 Web 服务器级别 (IIS) 或 web.config 中设置自定义错误页面(对于 asp.net)

于 2009-09-24T20:05:31.633 回答