在重定向到页面之前/之后,我需要一种方法来告诉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,如果在调用abandon()时,sessionid仍然存在于auth cookie中,它只会重用它,您需要明确地创建一个新的sessionid,例如:
HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId"); mycookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(mycookie);