根据Asp.Net团队What not to do in Asp.net提供的这些信息,您不应在托管的HttpModule中使用PreSendRequestHeaders
。
PreSendRequestHeaders和PreSendRequestContext
建议:不要将这些事件与托管模块一起使用。
可以使用PreSendRequestHeaders和PreSendRequestContext事件 使用本机IIS模块,但不使用实现的托管模块 IHttpModule的。设置这些属性可能会导致问题 异步请求。
这正是我在Image Processing Library中所做的,以确保正确的mime类型与响应一起发送。
建议的替代方法是什么?
答案 0 :(得分:1)
如果您查看MSDN's ASP.NET App Life Cycle页面上的HttpApplication
管道,您会在最底部找到PreSendRequestHeaders
和PreSendRequestContent
个事件。既然他们建议我们不要在托管IHttpModule
中使用这些,那么管道中的下一个最接近的事件将是EndRequest
,这与PreSendRequest *事件不同是确定性的。
我无法找到有关指定响应标头的首选做法的任何信息,但这对您有用。
答案 1 :(得分:1)
在BeginRequest
的处理程序中,使用HttpResponse.AddOnSendingHeaders
订阅该事件的处理程序。
这与PreSendRequestHeaders
基本相同,但它在ASP.NET管道中完全处理,因此它与PreSendRequestHeaders
的本机/托管接口没有相同的问题。