关闭浏览器实际上应该清除会话变量和ASP.net会话ID

bal*_*log 4 asp.net session

我有一个ASP.net页面.当我关闭网页时,我需要清除会话变量.

如何处理这个我需要将超时维持到20分钟.如果他在20分钟的超时时间内关闭并登录任意次数

是否有可能清除ASP.net会话ID

GvS*_*GvS 11

你不能这样做.

  1. 您不能依赖浏览器上发生的事件
  2. 服务器无法联系浏览器以查看它是否还活着

您无法控制最终用户的浏览器.用户可能关闭浏览器,崩溃,断开与Internet的连接,禁用或崩溃等等.或者用户可能只是输入另一个URL(之后用户可能会使用后退按钮返回到您的页面,并且期望继续他/她与您的网站的会话).

每次卸载页面时都会触发window.onbeforeunload.即使用户浏览您网站上的其他网页,他们也可能需要再次访问您的会话.


tva*_*son 5

[编辑]正如其他人所建议的那样,你的会话应该最终超时,但如果你想在超时之前关闭会话(例如清理大型会话对象)并且有javascript可供你使用...

您可以使用window.onbeforeunload回发到注销页面的处理程序来执行此操作.

function CloseSession( )
{
    location.href = 'SignOut.aspx'; 
}
window.onbeforeunload = CloseSession;
Run Code Online (Sandbox Code Playgroud)

你也可以通过AJAX来做.SignOut.aspx页面(或您正在使用的任何平台)应放弃用户的会话.

  • 请注意XSS(http://www.codinghorror.com/blog/archives/001171.html) (2认同)

dub*_*dub 5

我认为唯一的好方法是在服务器上设置会话变量的超时.Web服务器无法确定用户是否已关闭其浏览器.

Javascript不是一个好的选择,因为你可以在客户端禁用它.