IIS配置共享Session会话

步骤1:在测试环境部署集群。

步骤2:在集群机器的一台机器上打开服务,找到Aspnet State Server服务,StateServer会话管理。确保服务开启。

步骤3:在步骤2这台机器上打开注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\aspnet_state\Parameters。修改AllowRemoteConnection的项值为十进制的1。修改port的项值为十进制的10001。

步骤4:修改集群机器每台服务器的webconfig文件.在system.web节下新增以下2节点:

    stateConnectionString="tcpip=myserver:10001"

    cookieless="false" timeout="60" />

步骤5:重启个台集群机器的网站。

步骤4中的IP:myserver 必须是步骤2所对应的Aspnet State Server地址即作为Session服务器 IP地址

注:将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行
的Windows服务来控制这个缓冲区。状态服务全称是“ASP.NET State Service
”(aspnet_state.exe),状态服务在一台名为myserver的机器的42424端口(默认端口)运行。要在服务器上改变端口,可编辑HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state注册表项中的Port值。

优缺点:显然,使用状态服务的优点在于进程隔离,并可在Web farm中共享。 使用这种模式,会话状态的存储将不
依赖于iis进程的失败或者重启,然而,一旦状态服务中止,所有会话数据都会丢失。换言之,状态服务不
像SQL Server那样能持久存储数据;它只是将数据存储在内存中。

注:machineKey 的作用

按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。 

你可能感兴趣的:(ASP.NET)