当前位置:  开发笔记 > 后端 > 正文

如何以编程方式在ASP.NET应用程序中设置不同于200 OK的Response.StatusCode并仍然成功向客户端提供内容?

如何解决《如何以编程方式在ASP.NET应用程序中设置不同于200OK的Response.StatusCode并仍然成功向客户端提供内容?》经验,为你挑选了1个好方法。

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

做最简单的事情 - 使用空的Default.aspx页面清空asp.net Web应用程序项目.在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 .

使用fiddler表明我实际上真的在服务请求,但是浏览器完全无视它?!

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



1> Daniel..:

默认情况下,如果错误的响应小于可配置的数量,IE将显示其自定义错误页面.我相信金额是512字节,但我会尝试找到一些确认.因此,您需要做的就是在响应中添加更多内容.

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

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


更多相关信息:http://weblogs.asp.net/scottgu/archive/2006/04/09/App_5F00_Offline.htm-and-working-around-the-_2200_IE-Friendly-Errors_2200_-feature.aspx
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有