Asp.net
ASP .NET 檢查會話
我想在使用它之前檢查基頁麵類中是否存在 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 是否為空。