为什么PreSendRequestHeaders和PreSendRequestContent不能一直运行?

时间:2009-03-31 01:48:37

标签: asp.net events httpmodule pipeline httpapplication

使用HTTP模块时,是否有人注意到管道中的最后两个事件 - PreSendRequestHeaders和PreSendRequestContent - 并不总是运行?

我已经验证绑定到EndRequest的代码将运行,但是在绑定到PreSendRequestHeaders或PreSendRequestContent时不会。

有原因吗?我想也许这是一个缓存问题(304 Not Modified,你实际上并不发送内容......),但是我已经清除了缓存并确定服务器返回200 OK,这表明它发送了内容

这是一个问题,因为响应的StatusCode默认为200,我的理解是,在这两个最终方法之前,它不会更新为404或206。如果我在EndRequest期间检查StatusCode,它将始终读取200。

3 个答案:

答案 0 :(得分:1)

这与IIS 7集成管道有关吗?

要进行验证,但我认为仅当IIS 7在集成管道中运行时才会触发事件。

答案 1 :(得分:0)

我正在 PreSendRequestHeaders 事件中注入一个Cookie标头,并且尚未遇到一个没有触发的问题......

答案 2 :(得分:0)

可能与HttpResponse.BufferOutput有关。如果关闭缓冲,似乎所有标题和一些内容都会在这些事件触发时发送。