2008-11-13 28 views
4

我有一个ASP.net页面。当我关闭网页时,我需要清除会话变量。关闭浏览器实际上应该清除会话变量一个ASP.net会话ID

如何处理这个我需要保持超时到20分钟。 如果他关闭和登录在二十分钟的次数超时时间

是否有清除ASP.net会话ID

+0

不是这种重复http://stackoverflow.com/questions/283591/ aspnet-session-destroy-if-he-close-the-browser – 2008-11-13 14:51:53

+0

对不起,但我想你可能会试图在这里解决错误的问题。为什么你需要立即清除会话状态? – Kramii 2008-11-13 15:25:50

回答

5

[编辑]正如其他人的建议,你的会议应时间任何方法可行但如果你想在超时之前关闭会话(例如清理大型会话对象)并让你的javascript可用...

你可以用一个window.onbeforeunload处理程序来做到这一点,该处理程序回发到退出页面。

function CloseSession() 
{ 
    location.href = 'SignOut.aspx'; 
} 
window.onbeforeunload = CloseSession; 

你也可以通过AJAX做到这一点。 SignOut.aspx页面(或者你正在使用的任何平台)应该放弃用户的会话。

+1

只需准备好在浏览器崩溃的情况下就不会被调用。 – 2008-11-13 14:23:59

5

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

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

2

如果浏览器进程结束会怎么样?

Here是一招

你不应该有他们需要清理这么多的会话变量。查看this发布其他选项。

11

你不能那样做。

  1. 你不能依赖于事件发生在浏览器
  2. 没有办法的服务器可以联系的浏览器,看它是否还活着

你不控制端的浏览器-用户。用户可能会关闭浏览器,崩溃,断开Internet连接,禁用JavaScript或崩溃等,或者用户可能只需输入另一个URL(之后用户可能会使用后退按钮返回到您的页面,并且希望继续他/她的会议与您的网站)。

window.onbeforeunload在每次卸载页面时触发。即使用户浏览到您网站上的其他页面,也可能需要重新进行会话。

0

我不清楚ASP.Net如何实现其会话,但Cookie RFC的一部分是,会话cookie(无特定'expires'日期的cookie)在浏览器关闭时被清除。

肯定有办法让ASP.Net使用正确的会话cookie而不是固定超时的cookie?

-1

您好试试这个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*/  

我didn'try这一点,但它只是从心中出来

相关问题