HttpModule中的PreSendRequestHeaders替代方案

问题描述 投票:2回答:2

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

PreSendRequestHeaders和PreSendRequestContext

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

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

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

什么是推荐的替代方法?

c# asp.net httpmodule
2个回答
1
投票

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

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


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.