2010-03-31 47 views
4

我已經寫了,增加了一個響應濾波器的HTTP模塊。過濾器捕獲頁面輸出並將其存儲在會話變量中。爲什麼HttpContext.Current.Session在HttpModule中可用,但在Response.Filter中不可用?

  1. 我能夠訪問我的HttpModule中的HttpContext.Current.Session。
  2. 的HTTP模塊是處理PostAcquireRequestState事件。
  3. 我仍然能夠在PostAcquireRequestState事件訪問HttpContext.Current.Session。
  4. 在PostAcquireRequestState情況下,我補充一點,從流繼承到Response.Filter從Stream.Write方法訪問時
  5. HttpContext.Current.Session是空的自定義數據流。

一切使用一個inproc SessionState的時候工作得很好。不過,我現在必須使用StateServer。使用StateServer,代碼現在被破壞了。

任何想法?

回答

0

你試過從您的HttpModule傳遞會話對象添加到您的過濾器的構造和方式持有的參考?

通常我會永遠依靠我的過濾器訪問HttpContext.Current,但其分配給Response.Filter前通過通過構造函數或設置某些屬性必要的值。它將事物分離並使其更易於維護。

相關問題