代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如何实现Windows服务来管理会话状态?

  •  1
  • DaveDev  · 技术社区  · 14 年前

    我正在开发一个ASP.NET MVC Web应用程序,它将部署在多个负载平衡服务器上。使用此设置,用户可能有一个由服务器A提供服务的请求,下一个请求将由服务器B或服务器C提供服务。

    我们不想在数据库中存储会话数据,因为我们正在尽可能减少数据库命中。因此,我们需要在另一个服务器上管理和存储httpsession。

    我的理解是,通过使用Windows服务可以实现这一点,该服务将为我管理这一点,但我不熟悉如何实现这一点。有人能指点我一些好的文档来说明如何做这件事吗?或者有什么陷阱或者其他需要考虑的地方?谢谢

    3 回复  |  直到 14 年前
        1
  •  4
  •   Darin Dimitrov    14 年前

    您需要指定一台计算机来承载Windows NT服务,并且必须安装.NET(好吧,您可以使用其中一台Web服务器作为状态服务器,但我认为这是一个非常糟糕的主意):

    net start aspstate
    

    然后指示应用程序使用此服务器:

    <system.web>
      <sessionstate 
          mode="stateserver"
          cookieless="false" 
          timeout="20" 
          server="127.0.0.1" 
          port="42424" 
      />
    </system.web>
    

    你当然会在哪里换车 127.0.0.1 使用承载NT服务的服务器的IP地址。

    注意1:不要忘记装饰要存储到会话中的对象。 [Serializable] 属性。

    注意2:在负载平衡的环境中,这是一个很好的解决方案,但是如果您正在寻找真正的故障转移群集,那么应该使用SQL Server。

    您可以阅读有关ASP.NET会话状态的详细信息 on MSDN .

        2
  •  0
  •   Sky Sanders    14 年前

    像往常一样,彼得对这个问题作了很好的报道…

    http://www.eggheadcafe.com/articles/20021016.asp

        3
  •  0
  •   DanP    14 年前

    你可能想考虑的另一个选择是 Memcached Providers -它允许您将会话状态存储在memcached实例中;也可以使用SQL Server作为回退。两全其美,imho。