配置sessionState为StateServer

 

StateServer 模式将会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程。使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。

若要使用 StateServer 模式,必须首先确保 ASP.NET 状态服务运行在用于存储会话的服务器上。ASP.NET 状态服务在安装 ASP.NET 和 .NET Framework 时作为一个服务进行安装。ASP.NET 状态服务安装在以下位置:系统根目录\Microsoft.NET\Framework\版本号\aspnet_state.exe

若要将某个 ASP.NET 应用程序配置为使用 StateServer 模式,请在该应用程序的 Web.config 文件中执行以下操作:

  • sessionState 元素的 mode 属性设置为 StateServer
  • 将 stateConnectionString 属性设置为 tcpip=服务器名称:42424

下面的示例演示了 StateServer 模式的一种配置设置,其中会话状态存储在一个名为 SampleStateServer 的远程计算机上:

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

注意:

  • 在使用 StateServer 模式时,若要提高应用程序的安全性,建议您对配置文件的 sessionState 节进行加密,以保护 stateConnectionString 值。有关详细信息,请参见使用受保护的配置加密配置信息
  • 如果模式设置为 StateServer,则存储在会话状态中的对象必须是可序列化的。有关可序列化对象的信息,请参见 SerializableAttribute 类。
  • 若要在网络场中使用 StateServer 模式,则必须在 Web 配置文件的 machineKey 元素中为网络场中的所有应用程序指定相同的加密密钥。有关如何创建计算机密钥的信息,请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 313091“How to create keys by using Visual Basic .NET for use in Forms authentication”(如何使用 Visual Basic .NET 创建用于 Forms 身份验证的密钥)。

(以上内容摘自MSDN

可能出现的问题:

无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。 

解决方式:

  1. 在Session服务器上打开注册表并找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection项,将其值设置为1。
  2. 在服务里面找到“ASP.NET状态服务”重新启动服务即可。

你可能感兴趣的:(session)