获取会话在ASP.NET中优雅地过期

我需要一种方法来告知ASP.NET“重定向页面”之前/之后“杀死当前会话并重新开始”.

这是我要做的:

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

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

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

好的,到目前为止,我有步骤1和2覆盖.我有一个通过使用IsNewSession属性和ASP.NET会话ID cookie值来检测会话到期的功能.如果它检测到过期的会话重定向,则等待五秒钟,然后TRIES进入主页面.

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

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

解决方法

您正在描述的问题发生是因为asp.net正在重用sessionid,如果sessionid仍然存在于auth cookie中,当您调用abandon()时,它将重新使用它,则需要显式创建一个新的sessionid afaik:
HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId");
    mycookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(mycookie);

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...