关闭浏览器后,Session_End不会调用

时间:2013-04-05 08:46:39

标签: asp.net session web-config sessionend

我在web.config中使用以下设置

<sessionState mode="InProc" cookieless="false" timeout="10"/>

...

<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="10"/>

并且在Session_End中根据会话的值我更改数据库中列的值(如果此列的值为1表示用户在线)但有时在用户关闭浏览器的一天后此列的值钢为1(表示Session_End用户关闭浏览器后不会调用)

2 个答案:

答案 0 :(得分:1)

如果您的浏览器已关闭,则不会调用任何事件,超时后将调用该事件。

应该调用该事件,但不一定在超时后调用。

您可以尝试使用浏览器:启动会话,等待&gt; 1分钟,以某种方式做回传

这应该有助于验证超时是否有效,我认为您还会看到当时发生的SessionEnd。否则,只需等待并开始其他会话。系统会在某个时候调用它。

http://forums.asp.net/t/1689960.aspx/1

答案 1 :(得分:0)

没有Session_End不会在页面关闭时调用。 你需要使用脚本

<script>    
window.onbeforeunload = function (evt) {
var message = ‘Are you sure you want to leave?’;
if (typeof evt == ‘undefined’) {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}

</script>

使用此脚本可以确定用户何时关闭浏览器