在浏览器关闭的asp.net中放弃会话...杀死会话cookie

时间:2009-10-21 16:58:25

标签: asp.net session

所以我有一个网站,我使用会话开始和结束事件来跟踪和限制我们的Web应用程序的打开实例,即使在同一台计算机上也是如此。在页面卸载时,我调用一个启用会话的页面方法,然后调用session.abandon。

这会触发会话结束事件并清除会话变量,但遗憾的是不会终止会话cookie!因此,如果其他浏览器实例打开则存在问题,因为它们的会话状态刚刚消失...而且当我再次打开网站并且僵尸会话仍然没有过期时,我会得到多个会话启动和会话结束事件任何后续的回发。这发生在所有浏览器上。那么我如何真正杀死会话(强制cookie过期)

3 个答案:

答案 0 :(得分:1)

我一直用它来确保用户的会话消失了:

HttpContext.Current.Session.Abandon();

答案 1 :(得分:0)

如果您使用的是FormsAuthentication,则可以使用:

FormsAuthentication.SignOut();

答案 2 :(得分:0)

FormsAuthentication.SignOut();使用身份验证cookie到期,但在session.ate的web.config中指定的超时时间之前不会删除会话cookie。如果您想立即删除会话,请手动使会话cookie过期,如下所示。

var myCookie = new HttpCookie(“ASP.NET_SessionId”){Expires = DateTime.Now.AddDays(-1D)}; Response.Cookies.Add(的myCookie);