ASP.NET_SessionId),關閉瀏覽器過期。aspnet_state.exe 進程,多台 Web 連線共享。瀏覽器限制每域 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 叢集一致性。