session保存在专门的StateServer中,该种方式,性能损失比sql略好。比inproc据说有10%-15%的性能损失。怎么使用StateServer 服务器呢?
1、初始化StateServer服务器
启动ASP.NET 状态服务【aspnet_state】,该服务默认是手动启动的,可以通过修改注册表,设置为自动启动并允许远程连接。修改方法如下:
修改注册表: [HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/aspnet_state/Parameters]
设置 AllowRemoteConnection = 1 , 设置 Port = 42424 (十进制,默认即为42424)
AllowRemoteConnection ,0仅能本机使用,1可以供其他机器使用.
Port是服务的端口号
2、修改webconfig配置文件
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="60"/>
其中stateConnectionString中的tcpip表示StateServer服务器的ip和端口。
3、最后重启服务器,
也可以不重启服务器,采用 修改注册表不用重启就能生效的方法:https://jingyan.baidu.com/article/363872ec8dd5686e4ba16fb1.html
注意,如果是远程桌面,进入任务管理器,需要 ctrl+alt+end组合键代替ctrl+alt+del组合键。
修改完注册表后,需要重新启动服务才可生效。
4、需要特别注意各负载服务器的 MachineKey 是否一致,以及 IIS 上的站点ID是否一致,否则会出现 Session 不一致的情况。