2012-07-25 59 views
0

我在我的網站Session [「name」],Session [「lastname」]和Session [「username」]中有3個活動會話,Session.Abandon()會放棄所有會話嗎?會話放棄

回答

2

其實,你有一個活動會話(不是三個)。該會話具有與它關聯的那三個鍵/值對。

是的,只要當前頁面處理完成,Session.Abandon()將在放棄會話的過程中刪除所有這些變量。

一旦放棄方法被調用,當前會話不再有效,並且可以啓動新的會話。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

當Abandon方法被調用時,當前的Session對象排隊等待刪除,但實際上並沒有被刪除,直到所有的腳本都已經被處理了當前頁面上的命令。這意味着您可以訪問與放棄方法調用相同的頁面中存儲在Session對象中的變量,但不能訪問任何後續Web頁面中的變量。

http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx

UPDATE

如果你想完成執行頁面之前, 「擺脫」 鍵/值對,也可以清除它們是這樣的:

Session.Contents.RemoveAll() 

http://msdn.microsoft.com/en-us/library/ms524866(v=vs.90

+0

謝謝,這是有用的:) – Katerina 2012-07-25 15:53:31

+1

很高興幫助:-)。歡迎來到Stack Overflow。請記住對您的問題進行回覆和/或接受好的答案。 – 2012-07-25 15:54:35

0

是的,對象就會被破壞,但沒有立即(從msdn

當Abandon方法被調用時,當前的Session對象是 排隊等待刪除,但實際上並沒有被刪除,直到所有的 腳本命令在當前頁面上已經被處理。這意味着 ,您可以訪問存儲在會話對象中的變量,在與放棄方法調用相同的 頁面上訪問變量,但不能訪問任何後續Web頁面中的變量。

它是一個會話和3個變量。如果您需要儘快刪除它們,請將它們指向null,並且數據將立即成爲GC的主題(這不是確定性的)。

Session["name"] = null; 
Session["lastname"] = null; 
Session["username"] = null; 
+0

有什麼我可以做的放棄它們,就像我不能訪問存儲在與放棄的調用相同的頁面上的Session對象中的變量? – Katerina 2012-07-25 15:55:21

+0

@Katerina:是的,你可以。查看我的答案更新。 – 2012-07-25 15:58:27

+0

@EricJ。再次感謝你 :) – Katerina 2012-07-25 16:01:45

0

是的,它銷燬存儲在Session對象中的所有對象並釋放它們的資源。