浏览器关闭并重新打开后维护相同的会话

时间:2013-01-09 09:23:35

标签: asp.net session

我是asp.net的新手。我登录该站点并为userid创建会话,将此会话视为s1。 将cookie(c1)添加到客户端站点,并添加3天的到期时间。

假设我在没有注销的情况下关闭浏览器并再次使用相同的URL然后我发现会话为空但我得到了cookie(c1)然后我创建了一个新的会话。但是会话s1仍然占用服务器上的内存。这意味着这次两个会话在占用内存的同一台服务器上。

我想将session s1与cookie(c1)一起使用 - 是否可能。或者我想在第二次请求时删除会话s1。

我使用的代码是:

 if (Session["UserInfo"] != null)
    {
      // code 
    }
    else
    {
        HttpCookie HT = Request.Cookies["User"];
        if (HT != null)
        {
           Session["UserInfo"] = HT["UserName"]; //Here new session is created while previous is already exist on server
        }
        else
        {
           //code
        }
    }

2 个答案:

答案 0 :(得分:1)

IE会在每个请求上生成一个新的会话ID。因此,当您关闭浏览器时,旧的会话ID将丢失,因此浏览器会发送具有新会话ID的请求。这就是为什么你无法获得会话价值的原因。

但是在服务器上它占用服务器内存,在会话超时后由服务器清除。

Firefox会在每个请求上发送具有相同会话ID的请求,即使您关闭浏览器标签,也可以获得会话ID。

答案 1 :(得分:0)

使用表单身份验证的典型ASP配置cookie:

.ASPXFORMSAUTH到期:30分钟 ASP.NET_SessionId到期:在会话结束时

因此,当您关闭浏览器时,您将失去会话但不会被注销。 当您重新打开浏览器时,只有ASP.NET_SessionId已过期。

如果要创建持久会话cookie,请使用以下命令:

Create Persistent ID Cookies