开发asp.net应用时,修改web.config中的SessionState节点。
stateserver模式:
01.<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>InProc模式:
01.<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>
InProc模式
优势:获取session状态的速度快,session状态直接存储在iis的进程中。
缺点:易丢失,常常须要从新登陆
StateServer模式
优势:session状态单独存储在一个进程中,不会由于iis或者应用的重启而丢失状态
缺点:获取session状态的速度比InProc慢一些,毕竟是两个不一样的进程。
在开发的时候,对应用有一点修改,就会致使应用的重启,这时候若是使用InProc模式
,那么每次都须要从新登陆,比较浪费时间.建议使用StateServer模式。并在iis里面设置超时时间长一些。
注:使用StateServer模式的时候
一、要开启“ASP.NET State Service”服务(设为“自动”)
二、若是stateConnectionString的值不是127.0.0.1或者localhost等表明本地地址的值,须要修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为容许远程电脑的链接,0 表明禁止)→ 设置 Port (端口号)
三、session中存储非序列化的对象,若是违反会抛出 没法序列化会