在我的网页配置中,代码是
<sessionState mode="InProc" regenerateExpiredSessionId="true" cookieless="false" timeout="10" customProvider="DefaultSessionProvider">
和global.asax文件
protected void Session_Start(Object sender, EventArgs e)
{
Session["init"] = 0;
}
protected void Session_End(Object sender, EventArgs e)
{
Session.Clear();
}
问题是在会话超时后生成新的会话ID,即使浏览器和客户端机器实例相同。
并且使用上面的代码即使在会话超时后也保持相同的会话ID。 请帮忙。
答案 0 :(得分:2)
您的会话ID在ASP.NET会话ID cookie中维护。做Session.Clear()是不够的,你实际上必须从响应本身中删除cookie。
为此,请将Cookie上的expiration设置为负值,例如-1。
HttpCookie myCookie = new HttpCookie("ASP.NET_SessionId");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);