当前位置:  开发笔记 > 后端 > 正文

让Session在ASP.NET中优雅地过期

如何解决《让Session在ASP.NET中优雅地过期》经验,为你挑选了1个好方法。

在重定向到页面之前/之后,我需要一种方法来告诉ASP.NET"杀死当前会话并重新开始使用全新的会话".

这是我正在尝试做的事情:

1)检测ASP.NET应用程序的母版页(或Global.asax)中会话何时到期.

2)如果会话已过期,请将用户重定向到一个页面,告诉他们会话已过期.在此页面上,它将等待5秒钟,然后将用户重定向到应用程序的主页面,或者他们可以点击链接,如果他们愿意,可以更快地到达那里.

3)用户到达主页并再次开始使用该应用程序.

好的,到目前为止,我已经完成了第1步和第2步.我有一个函数,通过使用IsNewSession属性和ASP.NET会话ID cookie值来检测会话到期.如果它检测到一个过期的会话,它会重定向,等待五秒钟然后TRIES转到主页面.

问题是当它尝试重定向时,它会到达母版页中的部分来检测过期的会话并返回true.我试过调用Session.Abandon(),Session.Clear(),甚至将会话设置为NULL,没有运气.

之前有人不得不面对这个问题,所以我有信心社区有一个好的解决方案.提前致谢.



1> Element..:

您正在描述的问题是因为asp.net正在重用sessionid,如果在调用abandon()时,sessionid仍然存在于auth cookie中,它只会重用它,您需要明确地创建一个新的sessionid,例如:

 HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId");
    mycookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(mycookie);

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有