加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 20:28:58 所属栏目:asp.Net 来源:网络整理
导读:我需要一种方法来告知ASP.NET“重定向到页面”之前/之后“杀死当前会话并重新开始”. 这是我要做的: 1)在ASP.NET应用程序的母版页(或Global.asax)中检测会话何时到期. 2)如果会话已过期,请将用户重定向到页面,告知他们会话已过期.在此页面上,它将等待5秒钟,
我需要一种方法来告知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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读