首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Session 狀態伺服器配置指南與實戰經驗:負載平衡下的 Session 共享、Cookie 備份與數量限制應對

     編輯:關於ASP.NET

Session、SessionID、Cookie 三角關係

  • Session 資料在伺服器,SessionID 存客戶端 Cookie(ASP.NET_SessionId),關閉瀏覽器過期。
  • 每請求攜帶 SessionID,伺服器對應取得 Session。
  • 常見誤區:以為 Session 與 Cookie 無關——實則 SessionID 就在 Cookie 裡。

負載平衡 Session 共享三法

  1. StateServer:獨立 aspnet_state.exe 進程,多台 Web 連線共享。
  2. SQLServer:序列化存入 SQL Server,持久化、可叢集,需物件可序列化。
  3. Custom Provider:Redis、Memcached 等分散式快取。

實戰技巧:Cookie 數量超限導致 SessionID 丟失

瀏覽器限制每域 Cookie 數(約 20-50 個)。超限時新 Cookie 會擠掉舊的,含 ASP.NET_SessionId。代碼防護:

public bool SetCookie(int day)
{
    HttpCookie sessionBackup = null;
    if (Request.Cookies["ASP.NET_SessionId"] != null)
    {
        sessionBackup = new HttpCookie("ASP.NET_SessionId")
        { Value = Request.Cookies["ASP.NET_SessionId"].Value };
    }
    // ... 寫入業務 Cookie ...
    if (Request.Cookies.Count > 20 && sessionBackup != null && sessionBackup.Value != "")
    {
        Response.Cookies.Remove("ASP.NET_SessionId");
        Response.Cookies.Add(sessionBackup); // 重寫 SessionID 確保不丟
    }
    return true;
}

其他經驗:cookieless="UseDeviceProfile" 自動判斷、slidingExpiration 滑動過期、machineKey 叢集一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved