ASP.NET2.0揭秘讀書筆記六——使用工作階段狀態Session

來源:互聯網
上載者:User
 

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

使用Session對象
    使用者操作Session狀態最主要的API是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到自訂的位置;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.