問題描述:
asp.net應用中web.config的SessionState節點:原先是
<sessionState mode="InProc" timeout="120"/>
出現時間未到會話就丟失的狀況緣由是該配置將Session保存在IIS進程中,不穩定,致使Session丟失
解決方法:
將參數mode修改成 StateServer,將Session狀態單獨存儲在一個進程中,不會由於iis或者應用的重啓而丟失狀態
修改以下:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="600"/>
注:使用StateServer模式的時候一、要開啓「ASP.NET State Service」服務(設爲「自動」)
InProc模式
優勢:獲取session狀態的速度快,session狀態直接存儲在iis的進程中。
缺點:易丟失,常常須要從新登陸
html
此外,更要注意的是:web
修改回收標籤下【固定時間間隔】和進程模型標籤下【閒置超時】sql
一、在WEB.CONFIG文件中修改SESSION狀態保存模式,如:<sessionState mode='StateServer' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='false
' timeout='180'/>
二、啓動系統服務「ASP.NET狀態服務 」,系統默認是手動啓動的
三、若是SESSION中保存的數據類型是自定義的,如結構,請在自定義數據類型處序列化會話狀態,即在類或結構申明前加[Serializable] cookie