问题描述:
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