比如我有一个网站.www.abc.com 根目录是d:\web
然后分别有3个二级域名站(我分别建立了三个网站):
blog.abc.com  根目录是d:\web\blog
mail.abc.com  根目录是d:\web\mail
bbs.abc.com   根目录是d:\web\bbs
现在,我有一个用户,是通过http://www.abc.com/login.aspx来登陆,然后转到BBS的时候,我要在BBS目录中读取该用户的登陆信息.有login.aspx中,我是用一个Session来存放用户的各类信息的.
UserInfo user=new UserInfo();
Session["UserInfo"]=user;//存放的是对象
我要在BBS下面的首页,还原出用户登陆时的user对象信息.之前是这样写的
UserInfo user=(UserInfo)Session["UserInfo"];
可现在,由于在两个不同的网站中(主站和二级域名站在IIS中建立的是不同的站点),Session没有办法共享.在网络上看过用Cookie解决的方法,一来,Cookie只能存放单值,不能存放对象,二来,Cookie存放,安全性更差.也有人说,把Session存放庆Sql Server上,可存进去了,我在另外的网站中,该如何取出(还原出)原来的值呢?

解决方案 »

  1.   

    不同的站点不能用相同的session只能用cookies
      

  2.   

    不同的服务器或者不同的虚拟目录是不能共享Session的
    还是想其他的办法,或者一定要用Session的话,就要几个网站的Session同步
      

  3.   

    <sessionState 
        mode="[Off|InProc|StateServer|SQLServer|Custom]"
    mode 
     可选的 SessionStateMode 属性。指定存储会话状态值的位置。有关更多信息,请参见会话状态模式。mode 属性可以为下列可能值之一。默认值为 InProc。值  说明  
    Custom 
     会话状态将使用自定义数据存储区来存储会话状态信息。
     
    InProc 
     会话处于正在处理 ASP.NET 辅助进程的状态。
     
    Off 
     会话状态被禁用。
     
    SQLServer 
     会话状态将使用进程外 SQL Server 数据库来存储状态信息。
     
    StateServer 
     会话状态将使用进程外 ASP.NET 状态服务来存储状态信息。
     
      

  4.   

    不同的站点不能用相同的session只能用cookies
      

  5.   

    .net 里面的Cookie是不能存放对象的啊.难道我要一个个单值来存.再单值来取???
      

  6.   

    blackant2(乔峰) 的办法不错
    不过我从来没有试验成功过……
      

  7.   

    好象这种情况大家都用的Cookie,很少去专研session,费时费力
      

  8.   

    只要URLHOST不一样,SESSION就不能通用
      

  9.   

    可以做假啊....地址重写
    login进去的时候跳到web/bbs  而不是bbs.***.com/.