我有一个ASP.net页面。当我关闭网页时,我需要清除会话变量。
为了处理这个问题,我需要保持超时时间为20分钟。如果在20分钟的超时时间内关闭并登录多次。
是否有可能清除ASP.net会话ID?
我有一个ASP.net页面。当我关闭网页时,我需要清除会话变量。
为了处理这个问题,我需要保持超时时间为20分钟。如果在20分钟的超时时间内关闭并登录多次。
是否有可能清除ASP.net会话ID?
您不能这样做。
您无法控制最终用户的浏览器。用户可能关闭浏览器、崩溃、断开互联网连接、禁用或崩溃JavaScript等等。或者用户可能只是输入另一个URL(在此之后,用户可能通过使用“返回”按钮返回您的页面,并期望继续与您的站点保持会话)。
window.onbeforeunload会在每次卸载页面时触发。即使用户浏览到您网站上的另一页,他们也可能需要重新使用您的会话。
[编辑] 正如其他人所建议的那样,您的会话应该最终超时,但是如果您想在超时之前关闭会话(例如清理大型会话对象)并且可以使用javascript...
您可以使用一个window.onbeforeunload
处理程序,将其提交到注销页面。
function CloseSession( )
{
location.href = 'SignOut.aspx';
}
window.onbeforeunload = CloseSession;
我认为唯一好的方法是在服务器上对会话变量设置超时时间。网络服务器无法确定用户是否已关闭了浏览器。
Javascript 不是一个好的选择,因为客户端可以禁用它。
我不确定ASP.Net具体如何实现其会话,但Cookie RFC的一部分规定,会话Cookie(没有特定“过期”日期的Cookie)在浏览器关闭时被清除。
肯定有一种方法可以让ASP.Net使用正确的会话Cookie而不是具有固定超时的Cookie吧?
你好,试试这个 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*/
我没有尝试过,但这只是我的想法。