ASP.net会话如果他关闭浏览器就会销毁

时间:2008-11-12 10:51:57

标签: asp.net

我有一个网站。记录用户时,将加载会话详细信息。 当用户注销会话时,详细信息将被放弃。 (单击注销菜单注销) 当用户只是关闭浏览器然后如何销毁会话。

下次使用相同的会话数据进行日志记录。我需要避免这种情况。

8 个答案:

答案 0 :(得分:2)

作为处理注销的一部分,调用Session.Clear()来清除键/值对:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.clear.aspx

答案 1 :(得分:1)

这是一个有趣的post详细说明。

答案 2 :(得分:0)

您可以将会话配置为更快地超时。

在web.config中:

< sessionState ... timeout="5" />

答案 3 :(得分:0)

您基本上有两种选择:

  • 设置会话cookie的超时时间为1分钟,并每30秒发送一次“保持活动”的AJAX请求。
  • 不要使用cookies,只需在查询中传递会话参数。

每个解决方案都可以使用99%,如果你将它们组合起来,你应该在99.99%的情况下设置。取决于这种行为对你的重要性。

答案 4 :(得分:0)

您可以使用Page.OnUnload javascript事件向调用Session.Abandon()的页面发出请求。这将导致用户会话在他离开您的网站时被删除。

答案 5 :(得分:0)

听起来您正在使用持久性cookie来存储身份验证票证。尝试将SetAuthCookie方法的第二个参数(createPersistentCookie)设置为false,即FormsAuthentication.SetAuthCookie(“myusername”,false);

答案 6 :(得分:0)

当用户离开网站时,不调用Page.Unload(),在引擎完成呈现之前调用它,就在HTML发送到浏览器之前。一旦发生这种情况,就无法访​​问该页面。

我知道在PHP中你可以使用AJAX用javascript调用PHP函数。我不知道ASP.Net是否可行,或者是否适用于会话。

答案 7 :(得分:0)

try
    {
        Session["Admin"] = null;
        Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetNoStore();
        Session.Abandon();
        Session.Clear();                   
        Page.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Redirect("Dep_NewUserCreate.aspx");


    }
    catch(Exception ExLink)
    {
        Response.Redirect("Dep_NewUserCreate.aspx");
    }