我采用的是服务器集群,SessionState是SQLServer,发布了测试以后发现客户端浏览这个网页Session会丢失掉,但是服务器端浏览的话没有问题。本来以为是这个问题:要在 Web 场中的不同 Web 服务器间维护会话状态,Microsoft“Internet 信息服务”(IIS) 配置数据库中 Web 站点的应用程序路径(例如,\LM\W3SVC\2)与 Web 场中所有 Web 服务器必须相同。大小写也必须相同,因为应用程序路径是区分大小写的。在一台 Web 服务器上,承载 ASP.NET 应用程序的 Web 站点的实例 ID 可能是 2(其中应用程序路径是 \LM\W3SVC\2)。在另一台 Web 服务器上,Web 站点的实例 ID 可能是 3(其中应用程序路径是 \LM\W3SVC\3)。因此,Web 场中的 Web 服务器之间的应用程序路径是不同的。但是我后来两台服务器里面都安装在默认的80端口下(这样ID应该相同的),还是相同的问题。问一下还有其他什么可能会导致Session丢失。

解决方案 »

  1.   

    你试过多少个客户端?是不是因为客户端禁止使用cookie导致的?默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
      

  2.   

    我的测试环境是这样的 一个主服务器,放数据库,两台服务器作NLB的服务器,还有一台是做客户机。
    应该跟我的客户机没有关系的啊。
    我刚才写日志的方法看了一下,似乎是从一台NLB的服务器跳到另外一台的时候出问题了。连Application Start 都没有起来
    这个是怎么回事啊?
      

  3.   

    关注一下。数据库如果压力大是不是也可能导致丢失session呢?
      

  4.   

    除了应用程序路径要一致,Machine.config中的MachineKey也要一致。
      

  5.   

    在web.confing里面指定MachineKey就可以了
    不然默认读取Machine.config里面的东西(默认是自动生成模式)
      

  6.   

    回复人: Miracle(新一代的开山怪)除了应用程序路径要一致,Machine.config中的MachineKey也要一致。是正确的,我就是出在这个问题上了
      

  7.   

    服务器都是win2003吗?
    用win2003的自带NLB?