ASP.NET中的Session解析(一)

來源:互聯網
上載者:User

一、理解Session機制:
Session是一種用於伺服器端狀態管理的機制,伺服器使用一種索引值對的結構來儲存資訊。當程式需要為某個用戶端的請求建立一個Session的時候,伺服器首先檢查這個用戶端的請求裡是否已包含了一個Session標識 - 稱為 Session id,如果已包含一個Session id則說明以前已經為此用戶端建立過Session,伺服器就按照Session id把這個 Session檢索出來使用。在ASP.NET中,預設情況下這個Session id會儲存在用戶端瀏覽器的cookie 中,預設情況下如果不對Session做任何寫操作的話,用戶端是不儲存這個Session id的,可以通過在頁面拖一個button,不要對Session做任何寫操作,然後在Click事件中列印Session.SessionID,當單擊button時每次SessionID都是不同的。
 protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write(Session.SessionID);
    }

這說明伺服器端的Session id都是重新建立的。
Session id的儲存方式有以下四種
1、AutoDetect
Web.config做相應的配置如下:
<system.web>
    <sessionState  cookieless="AutoDetect">
    </sessionState>
</system.web>
ASP.NET 確定請求瀏覽器或請求裝置是否支援 Cookie。如果請求瀏覽器或請求裝置支援 Cookie,則 AutoDetect 使用 Cookie 來保留使用者資料;否則,將在查詢字串中使用一個標識符。如果瀏覽器或裝置支援 Cookie,但當前禁用了 Cookie,則請求功能仍會使用 Cookie(也就是禁止不了Session所用的Cookie,這一點我有點疑惑,我禁止掉ie的Cookie,但仍然可以使用Session)。
 
2、UseCookies
Web.config做相應的配置如下:
<system.web>
    <sessionState  cookieless="UseCookies">
    </sessionState>
</system.web>
 無論瀏覽器或裝置是否支援 Cookie,都使用 Cookie 來保留使用者資料。
 
3、UseDeviceProfile
Web.config做相應的配置如下:
<system.web>
    <sessionState  cookieless="UseDeviceProfile">
    </sessionState>
</system.web>
 ASP.NET 根據 HttpBrowserCapabilities 設定來確定是否使用 Cookie。如果 HttpBrowserCapabilities 設定指示瀏覽器或裝置支援 Cookie,將使用 Cookie;否則,將在查詢字串中使用一個標識符。
 
4、UseUri
Web.config做相應的配置如下:
<system.web>
    <sessionState  cookieless="UseUri">
    </sessionState>
</system.web>
無論瀏覽器或裝置是否支援 Cookie,調用功能都使用查詢字串來儲存標識符。這時候ASP.NET會將Session id存放在地址欄中,當訪問某個寫了Session的頁面時,地址欄會變成:

http://localhost:1237/WebSite6/(S(vyn3bk55h4a03w455vjiwj21))/default4.aspx

這時候你可以去列印Session id,你會發現Session id=vyn3bk55h4a03w455vjiwj21。

二、ASP.NET中Session的儲存模式有以下五種:
1、Custom
 工作階段狀態將使用自訂資料存放區區來儲存工作階段狀態資訊。
 
2、InProc
 會話處於正在處理 ASP.NET 輔助進程的狀態。
 
3、Off
 工作階段狀態被禁用。
 
4、SQLServer
 工作階段狀態將使用進程外 SQL Server 資料庫來儲存狀態資訊。
 
5、StateServer
 工作階段狀態將使用進程外 ASP.NET 狀態服務來儲存狀態資訊。
 
參考:

http://www.cnblogs.com/netflu/archive/2008/12/24/1361560.html

http://www.codeproject.com/KB/aspnet/ExploringSession.aspx

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.