如何解决HTTP模块中的响应修改
| 我在C#中构建了一个http模块,该模块仅覆盖生命周期的EndRequest,检查响应标头的状态代码,并在需要时修改响应代码。就像是:HttpContext context = ((HttpApplication)source).Context;
if (context.Response.StatusCode == 200)
{
context.Response.StatusCode = 404;
}
当我针对localhost(真实的IIS)进行测试时,这对我来说似乎很好,但是当我启用Intranet访问并从另一台计算机进行测试时,它每次都会失败。
通过另一台计算机进行测试时看到的错误是:
\“发送HTTP标头后,服务器无法设置状态。”
我还注意到,该请求两次请求相同的文件,而本地仅请求一次该文件。我听到有人说过有关输出缓冲的内容,但我也尝试将on BeginRequest响应OutputBuffer设置为true并得到相同的结果。
有什么想法吗?
解决方法
您需要在发送标头之前修改响应。我从来没有这样做,但是我猜正确的事件是
PreSendRequestHeaders
。链接
这是在此事件中设置标题的示例。
如果此事件对您不起作用,请在处理程序的后期处理之后在管道中检出一些事件:http://blogs.msdn.com/b/carloc/archive/2007/12/19/application -page-and-control-lifecycle.aspx但是请小心,因为您可能必须为IIS 7集成管道重写代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。