ASP.NET: Cookie會話丟失,Session超時配置 SESSION丟失問題解決辦法

問題描述:

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

IIS中設置超時時間
除了代碼中設置了超時時間,還須要在IIS中修改響應配置才能不讓Session失效
IIS管理器->應用程序池->高級設置 

修改回收標籤下【固定時間間隔】和進程模型標籤下【閒置超時】sql

 

SESSION丟失問題解決辦法

一、在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

相關文章
相關標籤/搜索