2011-04-26 73 views
2

我已經閱讀,該asp.net會話變量默認最後20分鐘的非活動瀏覽器。會話狀態asp.net生命期限

如果用戶註銷並立即登錄,會發生什麼情況?或者關閉瀏覽器並重新啓動它?會話狀態「死亡」? 如果沒有 - evey註銷或瀏覽器關閉會導致死亡的替代方法是什麼?

感謝

回答

2

會話狀態完全依賴瀏覽器爲「會話」中的每個請求提供的cookie。當服務器接收到每個請求的cookie時,它會檢查自上次請求以來默認的20分鐘是否已經過去。

因此,問題的答案:

如果用戶註銷並 立刻登錄時會發生什麼?

的cookie被標上註銷無效的服務器,當他們再次登錄

或關閉瀏覽器,然後重新啓動它被賦予新的品牌?

提供會話沒有過期也不會做出任何差別(如瀏覽器仍然會與每個請求一起發送cookie)

使其在埃維註銷或瀏覽器死 收盤?

雖然您可以將過期日期設置爲過去,但無法使Cookie「死亡」。您無法檢測到關閉瀏覽器的用戶。

1

會話「死」 20.分鐘不活動後(默認),或者如果它是由程序員清除。

要清除會話,請調用其上的Abandon方法。在註銷時執行此操作。

沒有簡單的方法可以檢測到瀏覽器窗口已關閉(例如,您可以使用Ajax從瀏覽器進行輪詢),因爲Web是無狀態的。但是,如果發生這種情況(並且沒有其他瀏覽器實例仍然處於打開狀態),那麼當用戶啓動一個新實例並訪問您的網站時,他將得到一個新的會話(儘管現有的實例會一直存在直到超時)。

1

註銷時可能需要手動清除會話。 瀏覽器的新實例應該有新會話。

2

無論會話保持活動依賴於兩件事情:

  • 無論會話是還活着的服務器上(20個您分鐘超時,或以編程方式放棄會話)
  • Whethet客戶端(瀏覽器)將Session cookie傳輸到服務器,因此會話可以被識別。

的會話cookie擔任非持久性餅乾,這意味着它們應該由瀏覽器(的瀏覽器),一個會話保持,所以你關閉瀏覽器,然後重新啓動它後,他們不應該被髮送。但實際上,這完全取決於客戶端瀏覽器的實現。

這裏的教訓:是的,當普通用戶關閉瀏覽器時,會話過期。但是你不能也不應該依賴它來做任何重要的事情。

1

Session.Abandon()將刷新所有會話。當用戶註銷時調用它。所以每次他註銷並登錄時,都會創建新的會話。會話超時和關閉瀏覽器將在下次自動導致新的會話。