程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 如何使用會話狀態Session

如何使用會話狀態Session

編輯:關於C#
 

和cookie不一樣的是,Session狀態沒有大小限制。如果有極端的要求,可以使用Session保存上G的數據。並且Session可以保存更復雜的對象,例如可以在Session中保存一個DataSet。
    當使用一個Session狀態時,一個名為ASP.NET_SessionId的cookie會自動添加到浏覽器。這個cookie包含一個唯一的標識符,它可以在頁面切換時跟蹤用戶。
    默認情況下,如果cookie被禁用了,Session狀態也不能正常工作了。默認情況下,假設用戶超過20分鐘不請求任何頁面,保存在Session狀態中的數據會被丟棄。

使用Session對象
    用戶操作Session狀態最主要的應用程序編程接口是HttpSessionState類。該對象被 Page.Session,Context.Session,UserControl.Session,WebService.Session和 Application.Session屬性暴露。也就是說基本可以在任何地方訪問到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的會話狀態
  默認情況下,Session狀態依賴cookie。如果用戶浏覽器禁止了cookie,默認情況下Session狀態就不能工作。這種情況下可以使用無cookie的會話,當啟用無cookie的會話時,用戶的會話ID就會添加到頁面的URL中。
可以修改配置文件的sessionState元素,配置cookieless的值為AutoDetect。

<?xml version="1.0"?>
< configuration>
< system.web>
< sessionState cookieless="AutoDetect"
regenerateExpiredSessionId="true" />
< /system.web>
< /configuration>

配置Session狀態管理 默認情況下,Session狀態被保存在ASP.NET所在的相同進程,這樣就導致了進程內Session狀態很脆弱以及進程內Session狀態可伸縮性較差的缺點。
如果你要想使Session狀態更健壯,ASP.NET  Framework提供了多種方式。如可以修改Session狀態模式配置ASP.NET Framewor把Session狀態存儲到另一個地方。
那麼Session狀態的模式有哪些值呢?
Off——禁用Session狀態;
InProc——默認模式,即在ASP.NET所在的進程存儲Session狀態;
StateServer——存儲Session狀態到獨立於ASP.NET進程的一個Windows NT進程;
SQLServer——存儲Session狀態到SQL Server數據庫;
Custom——存儲Session到自定義的位置;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved