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

前端之家收集整理的这篇文章主要介绍了获取会话在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,没有运气.

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

@H_301_16@

解决方法

您正在描述的问题发生是因为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);
@H_301_16@ @H_301_16@

猜你在找的asp.Net相关文章