我想知道什麼是最好的(例如最高效,普遍接受的行業標準)方法來處理潛在的會話過期,當您定期使用存儲在其中的值時你的代碼。正確處理潛在會話到期的方法
例如,我經常使用(在C#)類似於以下行:
Guid personGuid = (Guid)Session[SSPersonGuid];
我在Page_Load中檢查值是否爲空,並相應處理,但會議可能會在此人到期在頁面上,在這種情況下,當他們點擊頁面上的一個按鈕時,我們需要使用類似上面的內容,會有NullReferenceException。
是處理最好的辦法只是這樣每次使用之前檢查空:
if (Session[SSPersonGuid] == null) {...}
還是有某種我不知道特別的東西?
與StateServer和sql服務器方法,會話仍然可以超時雖然他們在頁面上雖然他們不能? – standgale 2012-08-16 04:22:42
看我的編輯。關於在進程外存儲時丟失會話,可能會發生如果StateServer進程重新啓動或重新啓動服務器......可能會發生個人從未見過或經歷過進程外會話超時的情況。 – 2012-08-16 04:44:29
我要麼做錯了事,要麼根本不明白它應該如何工作。我試着通過設置2分鐘的超時時間來測試它,看它是否仍然超時,並且在兩分鐘後仍然有效。根據我的理解,數據(例如SSPersonGuid)應該仍然可用。或者我不應該設置超時時間,並且永遠不會超時。或者,我還需要做些其他事情才能切換到StateServer模式(所需的服務正在運行,也就是說我需要重新啓動某些設備才能識別設置)。謝謝你的方式。 – standgale 2012-08-17 01:37:50