asp.net session mode 几种状态 (转)

 

开发asp.net应用时,修改web.config中的SessionState节点。web

stateserver模式:sql

<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模式:
<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中存储非序列化的对象,若是违反会抛出 没法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,所以不容许使用没法序列化的对象或 MarshalByRef 对象。若是自定义会话状态存储在“Custom”模式下执行了相似的序列化,则适用一样的限制。这样的异常。若是向session存储自定义的对象,那么该对象的类上必定要加上[Serializable]注释
相关文章
相关标签/搜索