我已經閱讀,該asp.net會話變量默認最後20分鐘的非活動瀏覽器。會話狀態asp.net生命期限
如果用戶註銷並立即登錄,會發生什麼情況?或者關閉瀏覽器並重新啓動它?會話狀態「死亡」? 如果沒有 - evey註銷或瀏覽器關閉會導致死亡的替代方法是什麼?
感謝
我已經閱讀,該asp.net會話變量默認最後20分鐘的非活動瀏覽器。會話狀態asp.net生命期限
如果用戶註銷並立即登錄,會發生什麼情況?或者關閉瀏覽器並重新啓動它?會話狀態「死亡」? 如果沒有 - evey註銷或瀏覽器關閉會導致死亡的替代方法是什麼?
感謝
會話狀態完全依賴瀏覽器爲「會話」中的每個請求提供的cookie。當服務器接收到每個請求的cookie時,它會檢查自上次請求以來默認的20分鐘是否已經過去。
因此,問題的答案:
如果用戶註銷並 立刻登錄時會發生什麼?
的cookie被標上註銷無效的服務器,當他們再次登錄
或關閉瀏覽器,然後重新啓動它被賦予新的品牌?
提供會話沒有過期也不會做出任何差別(如瀏覽器仍然會與每個請求一起發送cookie)
使其在埃維註銷或瀏覽器死 收盤?
雖然您可以將過期日期設置爲過去,但無法使Cookie「死亡」。您無法檢測到關閉瀏覽器的用戶。
會話「死」 20.分鐘不活動後(默認),或者如果它是由程序員清除。
要清除會話,請調用其上的Abandon
方法。在註銷時執行此操作。
沒有簡單的方法可以檢測到瀏覽器窗口已關閉(例如,您可以使用Ajax從瀏覽器進行輪詢),因爲Web是無狀態的。但是,如果發生這種情況(並且沒有其他瀏覽器實例仍然處於打開狀態),那麼當用戶啓動一個新實例並訪問您的網站時,他將得到一個新的會話(儘管現有的實例會一直存在直到超時)。
註銷時可能需要手動清除會話。 瀏覽器的新實例應該有新會話。
無論會話保持活動依賴於兩件事情:
的會話cookie擔任非持久性餅乾,這意味着它們應該由瀏覽器(的瀏覽器),一個會話保持,所以你關閉瀏覽器,然後重新啓動它後,他們不應該被髮送。但實際上,這完全取決於客戶端瀏覽器的實現。
這裏的教訓:是的,當普通用戶關閉瀏覽器時,會話過期。但是你不能也不應該依賴它來做任何重要的事情。
Session.Abandon()將刷新所有會話。當用戶註銷時調用它。所以每次他註銷並登錄時,都會創建新的會話。會話超時和關閉瀏覽器將在下次自動導致新的會話。
我假設您希望用戶註銷時 - 您希望會話被銷燬,而不僅僅是要刪除的會話密鑰/值對。
呼叫:
Session.Abandon();
會破壞會話。 http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx