和cookie不一樣的是,Session狀態沒有大小限制。如果有極端的要求,可以使用Session保存上G的數據。並且Session可以保存更復雜的對象,例如可以在Session中保存一個DataSet。
使用Session對象
HttpSessionState支持下面這些屬性:
CookieMode——用來指定是否啟用不依賴cookie的Session狀態功能。
Count——用來獲得Session狀態中包含項的數量。
IsCookieless——用來指定是否啟用不依賴cookie的Session狀態功能。
IsNewSession——用來檢測當前請求是否創建了新的用戶會話;
IsReadOnly——是否只讀;
Keys——用來獲取保存在Session狀態中項目的名稱列表;
Mode——用來指定當前Session狀態的存儲處理程序。
SessionID——用來獲得唯一的會話標識符;
Timeout——用來指定Web服務器假設用戶離開並取消Session狀態過期分鐘數。最大為525600分鐘(1年);
HttpSessionState對象還包含以下方法:
Abandon——用來終止一個用戶會話;
Clear——用來清除Session狀態中所有項目;
Remove——用來從Session狀態中刪除特定的項目;
提交會話事件
Global.asax中包含兩個可以處理的關聯Session狀態的事件:Session Start和Session End事件。Session Start事件是在一個新會話開始時觸發的,Session End事件在會話終止時被觸發。
會話失效控制
默認情況下,20分鐘內用戶不請求頁面,Session過期。可以在配置文件修改Session的過期時間:
<?xml version="1.0"?>
< configuration>
< system.web>
< sessionState timeout="60" />
< /system.web>
< /configuration>
也可以用編程的方式來改變Session狀態的過期時間
Session.Timeout = 60;
使用Cookieless的會話狀態
可以修改配置文件的sessionState元素,配置cookieless的值為AutoDetect。
<?xml version="1.0"?>
< configuration>
< system.web>
< sessionState cookieless="AutoDetect"
regenerateExpiredSession
< /system.web>
< /configuration>