我正在使用asp.net 3.5
Session.Abandon()
未使用新的SessionId
。
Session["abc"] = "abc";
Session.Abandon(); //Session id is same as checked in add watch
答案 0 :(得分:5)
是的,这是设计的。它将重用相同的会话ID。
请参阅http://support.microsoft.com/kb/899918
另外
http://weblogs.asp.net/karan/archive/2010/04/26/asp-net-session-state-revisited.aspx
答案 1 :(得分:3)
您可以Session.IsNewSession
识别新的内容,而不是使用SessionId
,ASP.net重新使用SessionId
,按照建议您in the KB Article通过程序化的方式将客户端cookie中的SessionId
设置为null。
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Response.Redirect(Request.Path);
答案 2 :(得分:2)
Session.Clear()
然后会话变量清除但用户仍然在同一会话中(例如,如果您不希望他重新登录)并重置所有会话特定数据。
Session.Abandon()
仅在页面完全执行后生效。因此,调用Abandon的当前页面仍然具有相同的会话。所有下一次浏览器调用都将在新的Session.i.e上丢失该特定会话,用户将获得新的会话密钥。