我有一个ASP.net页面。当我关闭网页时,我需要清除会话变量。
如何处理这个我需要将超时维持到20分钟。 如果他在20分钟的超时时间内关闭并登录任意次数
是否有可能清除ASP.net会话ID
答案 0 :(得分:11)
你做不到。
您无法控制最终用户的浏览器。用户可能关闭浏览器,崩溃,断开与Internet的连接,禁用或崩溃等等。或者用户可能只是输入另一个URL(之后用户可能会使用后退按钮返回到您的页面,并且期望继续他/她的网站会议。)
每次卸载页面时都会触发window.onbeforeunload。即使用户浏览到您网站上的其他网页,他们也可能需要重新开会。
答案 1 :(得分:5)
[编辑]正如其他人所建议的那样,你的会话应该最终超时,但是如果你想在超时之前关闭会话(例如清理大型会话对象)并且你可以使用javascript ......
您可以使用回复到退出页面的window.onbeforeunload
处理程序执行此操作。
function CloseSession( )
{
location.href = 'SignOut.aspx';
}
window.onbeforeunload = CloseSession;
你也可以通过AJAX来做。 SignOut.aspx页面(或您正在使用的任何平台)应放弃用户的会话。
答案 2 :(得分:5)
我认为唯一可行的方法是在服务器上设置会话变量的超时。 Web服务器无法确定用户是否已关闭其浏览器。
Javascript不是一个好的选择,因为你可以在客户端禁用它。
答案 3 :(得分:2)
答案 4 :(得分:0)
我不知道ASP.Net如何实现其会话,但Cookie RFC的一部分是,只要浏览器关闭,就会清除会话cookie(没有特定“过期”日期的会话cookie)。
当然有一种方法可以使用正确的会话cookie而不是具有固定超时的cookie来获取ASP.Net吗?
答案 5 :(得分:-2)
你好试试这个javascript函数
function ConfirmClose()
{
if (event.clientY < 0)
{
/* Your asynchronouse request to the page and call that function*/
}
}
/*now call this method on event of javascript*/
我没想过这个,但它只是出自心灵