2012-02-29 35 views
3

我的應用有時會在global.asax的Application_OnPostAuthenticateRequest事件中調用Server.Transfer作爲url rewite的一種。當發生這種情況,我需要訪問Session我得到一個HttpException:「會話狀態只能在enableSessionState設置爲true時使用...」我假設這是因爲我打電話給Server.Transfer事件。這就是爲什麼我得到例外?我應該什麼時候進行轉移?假設上下文處理程序是IRequiresSessionState或IReadOnlySessionState,Session可以訪問的第一個global.asax事件是什麼?

+0

我認爲會話變量都可以在session_start – 2012-02-29 14:31:39

+0

是創建它,然後執行後,但它是在隨後的請求的所有事件訪問?僅供參考我認爲我在這裏是錯誤的軌道,因爲我嘗試了幾個不同的事件,我得到了同樣的例外。此外,我只有在我需要調用Server.Transfer時才能得到它。 – Mike 2012-02-29 14:41:48

回答

8

PostAuthenticateRequest發生在AcquireRequestState之前,並且會話狀態只應在引發此事件後纔可用,因此如果您需要訪問請求的會話狀態,則需要等待該事件。

請參閱this page作爲參考。

  1. ...
  2. 擡起PostAuthenticateRequest事件。
  3. ...
  4. 提高AcquireRequestState事件。
  5. ...
+0

感謝您的參考,但無論何時我調用server.transfer,我仍然會收到異常。是否沒有會話,因爲/ blog/someentry根本沒有加載處理程序? – Mike 2012-02-29 16:19:31

相關問題