ASP Session 物件:跨頁面儲存使用者專屬資料
HTTP 是無狀態協定,ASP 透過 Session 物件為每位使用者建立唯一識別 (SessionID),儲存跨頁面共用的個人化資料。
運作機制
- 伺服器建立 Session 物件,產生唯一 SessionID
- SessionID 以 Cookie 形式寫入用戶端瀏覽器
- 後續請求攜帶 Cookie,伺服器識別對應 Session
- 預設逾時 20 分鐘 (可調整),逾時後自動銷毀
集合
| 集合 | 描述 |
| Contents | 儲存腳本指派的所有項目 (變數、物件) |
| StaticObjects | 儲存 <object> 標籤宣告的物件 |
屬性
| 屬性 | 描述 |
| CodePage | 指定動態內容顯示的字碼頁 |
| LCID | 設定/傳回地區識別碼 (影響日期/貨幣格式) |
| SessionID | 傳回唯一識別碼 (唯讀) |
| Timeout | 設定/傳回逾時分鐘數 |
方法
| 方法 | 描述 |
| Abandon | 立即結束目前 Session |
| Contents.Remove(key) | 移除指定項目 |
| Contents.RemoveAll() | 清空所有項目 |
事件 (於 Global.asa 中處理)
| 事件 | 觸發時機 |
| Session_OnStart | 新使用者首次請求頁面時 |
| Session_OnEnd | Session 逾時或呼叫 Abandon 時 |
實務範例:購物車計數器
<% ' Session_OnStart (Global.asa)
Sub Session_OnStart
Session("CartCount") = 0
End Sub
' 一般頁面新增商品
Session("CartCount") = Session("CartCount") + 1
Response.Write "購物車商品數: " & Session("CartCount") %>
注意事項:Session 資料儲存在伺服器記憶體,大量使用者會消耗資源;負載平衡環境需設定 Session 狀態伺服器 (State Server) 或 SQL Server 模式。ASP.NET 提供更完整的 Session 狀態管理選項。