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

posted on 2020-07-02 17:17  yxtic  阅读(711)  评论(0编辑  收藏  举报