2012-11-09 64 views
11

我得到'會話狀態在此上下文中不可用'的錯誤。會話狀態在此情況下不可用 - 在Global.asax中

enter image description here

嵌套在一些Global.asax文件內的方法的發送器參數的誤差:

  • 的Application_BeginRequest
  • Application_AuthenticateRequest
  • 在session_start
  • 的Application_Error

該錯誤發生在首次加載頁面時(以及之後加載的所有頁面)。

我在項目中添加了一個全新的空白頁面WebForm1.aspx,並將其作爲我的開始頁面。

你會認爲空頁什麼都不會出錯。沒有我的代碼執行,據我所知,加載空白頁面時。但我仍然遇到會話狀態錯誤。

我的項目完全正常。沒有顯示錯誤頁面。在任何時候都沒有不正確的行爲。

但是,這個會話錯誤顯示在我當前項目的sender參數中,這一事實讓我感到不安。這個錯誤是而不是在一個空白的新項目中生成的。

什麼可能是我目前的項目中這個錯誤的原因?

如何追蹤發生錯誤的位置?我無法在引擎蓋下的的ASP.NET代碼中設置斷點。或者我可以嗎?

這裏是我的會話配置:

<pages enableSessionState="true" /> 
<sessionState mode="InProc" cookieless="false" timeout="20" /> 

更新:

我剛剛發現一個全新的空白項目也有發件人對象這個錯誤。它在Application_BeginRequest和Application_AuthenticateRequest方法中可見。但是這個空白的項目並沒有像我的其他項目那樣生成Application_Error事件。

回答

23

您在循環中過早請求會話狀態。你需要在Application_AcquireRequestState

+0

我沒有要求任何東西。在發送者對象中發現此錯誤之前,我的代碼不會執行。 請注意列出的方法還包括Application_Error方法。 錯誤肯定是生成的。我不知道它來自哪裏。 – Jay

+1

這應該是答案。如果我們沒有在之前的任何事件中獲取SessionState,這就是原因。 –

+0

謝謝,這解決了我的問題與OP完全相同的情況。 +1 – Deverill

3

「如果樹落在森林裏,沒有人在附近聽它,它會發出聲音嗎?」

不要在沒有可用的位置觀察會話屬性。

+1

我不是。在Session_Start事件觸發後觸發的Application_BeginRequest事件仍然顯示錯誤。 然後發生了Application_Error事件。再一次......加載空白頁面時發生此錯誤,並且您可以看到Application_Start中沒有可能導致此錯誤的代碼。 – Jay

相關問題