我是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
}
}
答案 0 :(得分:1)
IE会在每个请求上生成一个新的会话ID。因此,当您关闭浏览器时,旧的会话ID将丢失,因此浏览器会发送具有新会话ID的请求。这就是为什么你无法获得会话价值的原因。
但是在服务器上它占用服务器内存,在会话超时后由服务器清除。
Firefox会在每个请求上发送具有相同会话ID的请求,即使您关闭浏览器标签,也可以获得会话ID。
答案 1 :(得分:0)
使用表单身份验证的典型ASP配置cookie:
.ASPXFORMSAUTH到期:30分钟 ASP.NET_SessionId到期:在会话结束时
因此,当您关闭浏览器时,您将失去会话但不会被注销。 当您重新打开浏览器时,只有ASP.NET_SessionId已过期。
如果要创建持久会话cookie,请使用以下命令: