asp.net(c#)有關 Session 操作的幾個誤區(qū)
來源:懂視網(wǎng)
責編:小采
時間:2020-11-27 22:45:22
asp.net(c#)有關 Session 操作的幾個誤區(qū)
asp.net(c#)有關 Session 操作的幾個誤區(qū):1. this.Session[username] = null HttpSessionState 內部使用 NameObjectCollection 類型的集合對象來存儲用戶數(shù)據(jù)。因此使用 this.Session[username] = null 僅僅是將該元素的值設為 null 而已,并沒有真的將其從 Session 中
導讀asp.net(c#)有關 Session 操作的幾個誤區(qū):1. this.Session[username] = null HttpSessionState 內部使用 NameObjectCollection 類型的集合對象來存儲用戶數(shù)據(jù)。因此使用 this.Session[username] = null 僅僅是將該元素的值設為 null 而已,并沒有真的將其從 Session 中

1. this.Session["username"] = null
HttpSessionState 內部使用 NameObjectCollection 類型的集合對象來存儲用戶數(shù)據(jù)。因此使用 this.Session["username"] = null 僅僅是將該元素的值設為 null 而已,并沒有真的將其從 Session 中移除。(為什么?暈~~~ 建議看看 C# 基礎方面的書。)
正確的方法是:this.Session.Remove("username");
刪除全部數(shù)據(jù):this.Session.RemoveAll(); 或 this.Session.Clear();
2. this.Session.Abandon()
該方法會導致當前 Session 被取消,系統(tǒng)會觸發(fā) Global.asax 中的 Session_End 事件(僅限于 Mode = InProc 時)。
盡管再次發(fā)出請求時 SessionID (可能)沒有發(fā)生變化,但是你會發(fā)現(xiàn) Global.asax Session_Start 事件被觸發(fā)。你還可以使用 this.Session.IsNewSession 屬性來判斷當前 Session 是否重新創(chuàng)建的。
由于某些組件和控件可能要使用 Session 信息(如使用 this.Session.SyncRoot 進行同步),因此不要輕易使用該方法清理 Session。
3. 用戶身份驗證
不要使用 this.Session["username"] = "ZhangSan" 、if (this.Session["username"] != null) 這樣的方式進行用戶身份驗證,這種方式既不安全也不合理。有關身份驗證請參考 MSDN 文檔或雨痕寫的相關文章。
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
asp.net(c#)有關 Session 操作的幾個誤區(qū)
asp.net(c#)有關 Session 操作的幾個誤區(qū):1. this.Session[username] = null HttpSessionState 內部使用 NameObjectCollection 類型的集合對象來存儲用戶數(shù)據(jù)。因此使用 this.Session[username] = null 僅僅是將該元素的值設為 null 而已,并沒有真的將其從 Session 中