Asp.net

ASP .NET 檢查會話

  • November 13, 2013

我想在使用它之前檢查基頁麵類中是否存在 Session ,但我發現如果它不存在,只需檢查它就會拋出異常:

if (Session != null)
{
   Session.Remove("foo");
}

會拋出這個異常:

會話狀態只能在 enableSessionState 設置為 true 時使用,無論是在配置文件中還是在 Page 指令中。還請確保 System.Web.SessionStateModule 或自定義會話狀態模組包含在應用程序配置的 \ 部分中。

檢查發生在我的所有 aspx 頁面派生自的基頁麵類的 Load 事件中。該應用程序啟用了會話,並且它在 httpModules 節點中列出了模組。這是一個經常使用會話的應用程序,通常沒有問題。

我只在某些頁面上收到此錯誤,而且大多數時候它不可靠。我知道我應該做一些不同的事情來防止錯誤,但我不確定是什麼?

我可能在生命週期中過早地呼叫 Session 嗎?我是否沒有正確檢查會話是否可用?

您可以使您的檢查更安全 - Page.Session 圍繞 Context.Session 屬性包裝了一個空檢查。所以你應該能夠檢索 Context.Session 並檢查它是否為空。如果是,則會話狀態不可用。

但它應該在 Page_Load() 中可用,因此指向其他地方的問題:)

您可以使用這樣的方法來確定目前請求是否使用會話:

   public static bool RequestHasSession
   {
       get
       {
           return (HttpContext.Current.Handler is IRequiresSessionState);
       }
   }

如果您不確定自己是否在 Web 上下文中執行,則需要事先檢查 HttpContext.Current 是否為空。

引用自:https://stackoverflow.com/questions/1125376