【问题标题】:Why is HttpContext.Current.Session available in HttpModule but not in Response.Filter?为什么 HttpContext.Current.Session 在 HttpModule 中可用,但在 Response.Filter 中不可用?
【发布时间】:2011-02-03 03:09:23
【问题描述】:

我编写了一个添加响应过滤器的 HttpModule。过滤器正在捕获页面输出并将其存储在会话变量中。

  1. 我可以在我的 HttpModule 中访问 HttpContext.Current.Session。
  2. HttpModule 正在处理 PostAcquireRequestState 事件。
  3. 我仍然能够在 PostAcquireRequestState 事件中访问 HttpContext.Current.Session。
  4. 在 PostAcquireRequestState 事件中,我添加了一个从 Stream 继承到 Response.Filter 的自定义流
  5. 从 Stream.Write 方法访问时,HttpContext.Current.Session 为 null。

使用 InProc SessionState 时一切正常。但是,我现在必须使用 StateServer。使用 StateServer,代码现在被破坏了。

有什么想法吗?

【问题讨论】:

    标签: asp.net iis httpmodule


    【解决方案1】:

    您是否尝试过将会话对象从您的 HttpModule 传递给您的过滤器构造函数,并以此保持引用?

    通常我永远不会依赖在我的过滤器中访问 HttpContext.Current,而是通过构造函数传递必要的值或在将其分配给 Response.Filter 之前设置一些属性。它将事物解耦并使其更易于维护。

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2017-12-17
      相关资源
      最近更新 更多