【问题标题】:Why don't PreSendRequestHeaders and PreSendRequestContent run consistently?为什么 PreSendRequestHeaders 和 PreSendRequestContent 运行不一致?
【发布时间】:2009-03-31 01:48:37
【问题描述】:

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

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

有什么原因吗?我认为这可能是一个缓存问题(使用 304 Not Modified,您实际上并没有发送内容......),但我已经清除了缓存并确定服务器正在返回 200 OK,这表明它发送了内容.

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

【问题讨论】:

    标签: asp.net events httpmodule pipeline httpapplication


    【解决方案1】:

    这不是和 IIS 7 集成管道有关吗?

    有待验证,但我认为这些事件仅在 IIS 7 在集成管道中运行时才会触发。

    【讨论】:

    • 我认为你是对的,但我遇到了同样的问题,即使 IIS 在集成管道模式下运行,它也不会触发。
    【解决方案2】:

    我在 PreSendRequestHeaders 事件中注入了一个 cookie 标头,但尚未遇到无法触发的问题...

    【讨论】:

      【解决方案3】:

      也许它与 HttpResponse.BufferOutput 有关。如果关闭缓冲,那么在这些事件触发时,似乎所有的标头和一些内容都已经发送了。

      【讨论】:

        猜你喜欢
        • 2014-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        相关资源
        最近更新 更多