解决IIS设置多个工作进程中Session失效的问题

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和端口。

注意StateServer不支持负载均衡,如果是大并发请保存在sql中。