一个网站部署在几个服务器上,当用户在其中一个服务器登录后(生成一个SessionID),当转到另一个服务器的页面后却又生成另一个SessionID,从而需要重新登录。
   怎样配置(或者程序)才能实现在一个服务器上生成的Seession多个服务器可以共用!多谢!

解决方案 »

  1.   

    分兩步來做,先判斷用戶是否合法,如果合法,則跳轉到某一服務器的用戶授權頁面對該用戶進行授權。比如:
    1、authorization.aspx:
    該頁面可能只有一個;作用是判斷是否合法用戶;2、authentication.aspx:
    各服務器上都有;作用是為合法用戶session("xx")賦值;
      

  2.   

    To smile9961(good life)   你的方法只能解决所有机器取得登录信息。但我在一台机器中用Session存了一些数据,而在另一台机器中要取得那些数据,这个好像不行啊!
      

  3.   

    修改你的代码的Web.Config配置,SessionState项进行修改,可以修改为
    <sessionState 
        mode="[Off|InProc|StateServer|SQLServer|Custom]" ……>默认为InProc,所以不会共享Session,而StateServer就可以满足你的需要;SQL Server方式也可以满足,但是性能上会差一些,不过如果有异构平台的时候,也许就是唯一选择了。不过你的网站应该没有这样的需要。
      

  4.   

    将Session序列化然后存到数据库中Web.config中Session可以这样设置!
      

  5.   

    因为目前多个服务器不是一个群集,当从一个服务器转向另一服务器后,在SQL Server中便生成了两个SeeeionID,所以还是不能实现共享的!<sessionState mode="SQLServer"....>不管用啊!
      

  6.   

    To smile9961(good life)    流程主要是用Session存放购物车信息,用户在一个服务器的商品页面添加了一个商品,用户可能转到另一个商品页面,而该页面是在另一个服务器上,我在该页面不仅可以浏览刚才添加的商品信息,同时可以继续添加该页面商品到购物车,最后将所有的商品生成一个订单!
      

  7.   

    修改Web.Config配置将sessionState配置如下
    <sessionState 
      mode="StateServer" 
      cookieless="false" 
      timeout="240" 
      stateConnectionString="tcpip=10.164.222.122:42424" 
      stateNetworkTimeout="14400" 
    /> 
    同时在每个服务器加上
    <machineKey 
      validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" 
      decryptionKey="5FC88DFC24EA123C" 
      validation="SHA1"
    /> 这样可以在多台服务器上共用一个SessionID,从而可以共享Session。
      

  8.   

    请参考这里:http://blog.csdn.net/cityhunter172/archive/2006/05/14/727743.aspx