代码之家  ›  专栏  ›  技术社区  ›  Saturn K

如何在ASP.NET中跨多个web应用程序维护相同的会话id

  •  7
  • Saturn K  · 技术社区  · 14 年前

    因为我将会话存储在StateServer中,所以它们应该获得相同的会话数据,但是,每次我从application a转到application b时,都会创建不同的会话id。这种情况在负载平衡场景中不也会发生吗?我什么时候去哪www.test.com,它会将该请求重定向到服务器a,然后如果我再次点击它,它会转到服务器b,但由于它是另一个web应用程序,它会创建一个新的会话id?

    3 回复  |  直到 14 年前
        1
  •  7
  •   matt-dot-net    14 年前

    首先,将web.config中的sessionState元素配置为在两个应用程序中都使用cookieName=“SOME\u COOKIE\u NAME\u HERE”。

    然后,只需确保URL具有相同的TLD(顶级域),即app1.mydomain.com和app2.mydomain.com,并且您应该能够在Global.asax中处理Session\u Start事件并输入以下代码:

        HttpCookie cookie = new HttpCookie("SOME_COOKIE_NAME_HERE", Session.SessionID.ToString());
        cookie.Expires = DateTime.Now.AddMinutes(20);
        cookie.Domain = "*.mydomain.com";
        cookie.HttpOnly = true;
        Response.SetCookie(cookie);
    

    另外,我建议您使用SqlServer SessionState模式。

        2
  •  1
  •   Manjunath Jakkandi    11 年前

    您需要使用负载均衡器测试对网络上多个服务器的影响。

        3
  •  -1
  •   David    14 年前