会话ID在asp.net mvc4应用程序中不会改变会话超时

时间:2013-09-12 05:11:42

标签: session asp.net-mvc-4

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

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

1 个答案:

答案 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);