天天看點

Session的配置

人人都知道怎麼去使用session,但是初學者,尤其是自學的學生可能對于程序外的Session不甚了解,今天我就花半個小時做個簡單的示範。

    首先,session其雖然是基于 cookie的,同時隻對本次會話來産生效果,(原理很簡單,就是字典内儲存一個字典,外層字典的key也就是asp_netsessionId是 由.NET自動配置設定的并儲存到隻對本次會話有效的cookie中,我們的工作隻是負責内部我們需要的字典的内容,并有.NET自動配置設定一塊區域儲存起來, 當然這個是有一定的時效性的,模拟代碼可以看看資料,或者反編譯下看看,很簡單,這裡就不說了)但是有時候我們就會發現預設的session存儲方式,可 能造成資料的丢失,雖然他的存儲類型是object,但是我們要是存儲大量的資料就經常出現資料的丢失。

    下面我介紹兩種人人都知道,我也剛知道的配置手段。這兩種都是程序外的session機制,可以在IIS或ASP.NET服務意外關閉時繼續保持狀态.

1.使用aspnet_state.exe

步驟:對于win7不用找,直接打開服務,其一般是已經注冊了的。

開始---運作---services.msc 找到

然後打開它,之後我們在web.config内配置Session狀态

 42424是預設端口号(可以修改),同時預設的也是本機通路,要是需要可以在系統資料庫配置,以滿足遠端伺服器的。

然後AllowRemoteConnection值修改為1,0代表本機。之後字需要修改web.config中的IP即可。

現在我們來測試一下效果:

我前面的就不在示範了,這裡示範一下,擷取session後關閉了伺服器,之後再打開,我就可以看到

多次重新整理session任然保持存在。

2.使用SQLServer儲存

微軟提供了2中儲存方式(附帶建立腳本)

臨時儲存區:InstallSqlState.sql & UninstallSqlState.sql

永久儲存區:InstallPersistSqlState.sql & UninstallPersistSqlState.sql

步驟:我們在.NET安裝目錄中打開,出現

之後配置一下web.config,

<code>&lt;sessionState mode=</code><code>"SQLServer"</code> <code>sqlConnectionString=</code><code>"...."</code><code>&gt;&lt;/sessionState&gt;</code>

 我們打開SSMS.

運作我們上面官方提供的腳本,這裡拿出一個臨時儲存區的腳本運作

臨時腳本

雖然會報錯,但是不用管,沒什麼影響,之後會出現一個資料庫

怎麼測試就不說了,都是一樣的,還有就是永久存儲區的建立都是一樣的, 隻是内部會儲存具體的資訊,同時我們可以配合SQL代理

 作業來自動删除失效的session對象.

這裡不同程序間的通訊涉及到序列化問題,這裡就不說了,裡面有就很容易看出來。

好了,今天到此結束,休息一會去了。

本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2012/05/15/2500880.html,如需轉載請自行聯系原作者