我有两个web系统,共用一个登录用户表。如果一个系统已经登录,点“自动切换”按钮的时候,就不用登陆了。
问题是,我一点按钮,session就自动丢失了。怎么办,谢谢,在线等。
我的切换代码是: // 系统切换
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        if (Session["User"] == null || (Session["User"]).ToString() == "")
        {
            Response.Write(" <script   language=javascript> parent.location.href= 'Dl.aspx '; </script> ");
            return;
        }
        else
        {            
            Response.Write(" <script   language=javascript> parent.location.href= 'http://192.168.200.201/aa/a.html'; </script> "); 
        }
    }

解决方案 »

  1.   

    两个系统不再一个程序域中,无法共享session,可以在iis里把其中一个设置为虚拟目录 
      

  2.   

    谢谢楼上,两个系统我都设置了虚拟目录。A、B两个web系统。默认网站直接指向A系统,即是'http://192.168.200.201 'B系统的虚拟目录名就是aa.访问地址是'http://192.168.200.201/aa/a.html'。
    还是不行。
      

  3.   

    那用url传值,传值的时候将参数加密一下
      

  4.   

    我记得不能用response.write()吧,应该在跳转前都已经清除了
      

  5.   

    跨域操作无法共享session 可以尝试单点登陆方式
      

  6.   

    sql server 模式存session,stateServer模式
      

  7.   

    ASP.NET 存储Session的StateServer由于公司要对服务器做个负载均衡,所以Web项目在两台前端服务器(web1、web2)各部署了一份。但是在项目中会用到session。当一开始在web1上登陆后,由于 web1之后负载可能会变大,就有可能从web1跳转到web2上。从网上找了好多资料,自己也明白在web.config里配置<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30" cookieless="AutoDetect" />网上的好多例子都是把stateConnectionString="tcpip=127.0.0.1:42424",这样做在一台web服务器上当然没问题,但是当把stateConnectionString改成 stateConnectionString="tcpip=192.168.1.82:42424"的时候两台前端就会有问题。微软也没有给出具体的方案,MSDN上的例子也都是指向127.0.0.1的。后来经过研究和向高手请教才知道还得把保存Sessin的服务器的注册表修改一下,在这里就是 192.168.1.82这台了,修改如下:修改注册表:HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"aspnet_state"Parameters AllowRemoteConnection=1 然后重启 ASP.NET State Service 连接配置如下:<sessionState mode="StateServer"stateConnectionString="tcpip=192.168.1.200:42424" cookieless="AutoDetect"timeout="60" />之后经过测试果然就OK了。希望对其他的人有帮助。