HttpModule中的PreSendRequestHeaders替代方案

时间:2013-09-09 21:30:43

标签: c# asp.net httpmodule

根据Asp.Net团队What not to do in Asp.net提供的这些信息,您不应在托管的HttpModule中使用PreSendRequestHeaders

  

PreSendRequestHeaders和PreSendRequestContext

     

建议:不要将这些事件与托管模块一起使用。

     

可以使用PreSendRequestHeaders和PreSendRequestContext事件   使用本机IIS模块,但不使用实现的托管模块   IHttpModule的。设置这些属性可能会导致问题   异步请求。

这正是我在Image Processing Library中所做的,以确保正确的mime类型与响应一起发送。

建议的替代方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您查看MSDN's ASP.NET App Life Cycle页面上的HttpApplication管道,您会在最底部找到PreSendRequestHeadersPreSendRequestContent个事件。既然他们建议我们不要在托管IHttpModule中使用这些,那么管道中的下一个最接近的事件将是EndRequest,这与PreSendRequest *事件不同是确定性的。

我无法找到有关指定响应标头的首选做法的任何信息,但这对您有用。

答案 1 :(得分:1)

BeginRequest的处理程序中,使用HttpResponse.AddOnSendingHeaders订阅该事件的处理程序。

这与PreSendRequestHeaders基本相同,但它在ASP.NET管道中完全处理,因此它与PreSendRequestHeaders的本机/托管接口没有相同的问题。