2010-08-18 112 views

回答

4

該會話位於服務器上。當瀏覽器關閉足夠長時間或者使用時間不夠長,或者新的請求到達時(不包含cookie),或者cookie指向過去太遠的sessionid時(默認超時時間爲20分鐘)。

當沒有連接時,會話將在未確定的時間從內存中刪除,或者在會話上以編程方式調用.Abandon

當會話不可用或者會話因超時而被清除時,會創建一個新的會話對象。當這是瀏覽器請求的結果時,Session_End事件將在global.asax文件中觸發。

注意:會話超時和清除的實際方式取決於。即,進程會話將被銷燬並觸發Session_Timeout。超級會話不會,並且會在狀態服務器或SQL服務器中銷燬。在後一種情況下,定期調用一個存儲過程來清理。只有在服務器上有活動時纔會調用存儲過程,這意味着會話在(數據庫)內存中的活動時間可能超過20分鐘,但在下次訪問時會被銷燬。

+0

當瀏覽器關閉時,Session_Timeout事件將從何處以及如何觸發? – Bala 2010-08-18 11:03:20

+0

@Bala:瀏覽器關閉時不會觸發,HTTP是無狀態的。但會議將在某個時間被清除。我會通過一個鏈接更新我的帖子,爲什麼這是它的方式。 – Abel 2010-08-18 11:14:21

+1

@Bala:實際上,我剛剛重寫了我的答案,以消除含糊不清和含糊(我希望),但是確實要問是否還不清楚。 – Abel 2010-08-18 11:21:26

1

在Web服務器(例如IIS)上定義。典型的默認值是上次訪問後20分鐘左右(即該會話的Web請求)。此時會話已被清除,因此應用程序需要使用Cookie或某種服務器端狀態來確定回訪人員的身份,從而使體驗變得無縫。

+0

典型的默認值是20分鐘;-) – Abel 2010-08-18 10:58:05

+0

Ooops - 謝謝。更新。 (我正在考慮ADO.NET命令超時...) – 2010-08-18 10:59:12

+0

會話如何清除?任何事件將被觸發或它是瀏覽器屬性? – Bala 2010-08-18 11:01:43

1

瀏覽器臨時cookie被刪除,並且服務器在自上次訪問以來的預定時間量之後殺死會話數據。

+0

Cookie有自己的到期細節,與Web服務器上的會話分開。 – 2010-08-18 10:57:36

+0

是的,並且沒有用於追蹤會話的cookie沒有被賦予到期日期/時間並且在瀏覽器關閉時即過期。 http://en.wikipedia.org/wiki/HTTP_cookie – Ashley 2010-08-19 12:51:51

1

它確實沒有。它存在於服務器上,直到超時(通常20分鐘)。但是,由於使用會話cookie在瀏覽器中保持活動狀態,並且在瀏覽器關閉時到期,用戶將無法再次重新連接到該會話。

相關問題