SessionSate设置
sessionState设置为我们asp.net中的session配置方式
<sessionState mode="InProc" cookieless="false" timeout="120"/>
说明mode设置方式 timeout超时时间 (分钟) cookieless是否启用cookie
mode的几种模式:Off、InProc、StateServer及SqlServer
Off模式
关闭模式,不需要使用Session,一般不用
<sessionState mode="Off"></sessionState>
InProc模式(默认)
<sessionState mode="InProc" cookieless="false" timeout="120"/>
模式为InProc模式是iis默认方式,Session直接存储在IIS进程中,但session易丢失;
优点:获取session状态的速度快,session状态直接存储在iis的进程中
缺点:易丢失;
ASP.NET进程(aspnet_wp.exe)、IIS进程(w3wp.exe)默认的20分钟重启应用程序;缓冲池填满后重启;进程保护措施重启;等都会导致进程重启,从而导致session丢失;
在开发的时候,对应用有一点修改,就会导致应用的重启,这时候如果使用InProc模式 ,那么每次都需要重新登录,比较浪费时间.建议使用StateServer模式。并在iis里面设置超时时间长一些
StateServer模式(推荐方式)
<sessionState mode="StateServer" cookieless="false" timeout="120" stateConnectionString="tcpip=127.0.0.1:42424" />
mode设置为"StateServer"时,Session 存储在单独的内存缓冲区中,再由单独一台服务器上运行的ASP.NET State Service(aspnet_state.exe)来控制这个缓冲区。
如果 stateConnectionString中配置的是127.0.0.1则为服务器本机;
注意:需要启动ASP.net State service 状态服务
优点:session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态。
缺点:
a、由于是两个不同的进程,获取Session数据比InProc慢;
b、Session数据存储在内存中,重启ASP.NET State Service服务,Session数据将丢失。
以上设置的ASP.NET State Service在127.0.0.1的42424端口(默认端口)上运行,要在服务器上改变端口,可编辑HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。(打开注册表方式:运行 regedit)
如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为允许远程电脑的连接,0 代表禁止)→ 设置 Port (端口号)
SqlServer模式
mode设置为"SqlServer"时,Session存储在SQL Server数据库中持久化保持,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服务器所需的安全凭证)指定的SQL Server中。
参照:
https://www.cnblogs.com/libingql/p/4675752.html
https://blog.csdn.net/LeehomeYU/article/details/74909611?utm_source=blogxgwz5