HttpContext.Current.Session.SessionID相關問題及備忘


今天Tony提到說我們系統中會利用如下代碼來判斷用戶是否過期。

if (string.IsNullOrEmpty(UserContext.ConnectionSessionId))
{
       LogUIFactory.Current.Debug(HEARTBEAT_DISCONNECTION_LOG_2);
       timeout = true;
}

但是我做實驗發現,在page load的時候,打印出來的sessionid是一直在變化的:

 protected void Page_Load(object sender, EventArgs e)
{
     Response.Write(HttpContext.Current.Session.SessionID);
}

上面這代碼很好解釋,因為http連接是無狀態的,所以每次請求過來,sessionid會變化,不足為怪。

但是如果稍微加點料,就不一樣了:

protected void Page_Load(object sender, EventArgs e)
{
    Session["tst"] = "222";
    Response.Write(HttpContext.Current.Session.SessionID);
}

上面打印出來的sessionid是一直不會再變化的。

看來如果賦值了之后,session實例會被創建,然后其id就被固定下來了。

 session這東西幾年前在用,最近幾年寫程序,一直在用cookie,都差點忘記了session這點了。今天看到老系統用的仍然是這個,並且發現了其中的這點,感覺收獲還挺大的,至少可以再解決框架中的一個技術難點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM