1

在我的网络配置中,代码是

 <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。请帮忙。

4

1 回答 1

2

您的会话 ID 在 ASP.NET 会话 ID cookie 中维护。执行 Session.Clear() 是不够的,您实际上必须从响应本身中删除 cookie。

为此,请将 cookie 的过期时间设置为负值,例如 -1。

HttpCookie myCookie = new HttpCookie("ASP.NET_SessionId");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
于 2013-09-12T06:17:04.177 回答