-1

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

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

...

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

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

4

2 回答 2

1

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

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

您可以从浏览器尝试:开始会话,等待 > 1 分钟,以某种方式进行回发

这应该有助于验证 Timeout 是否有效,我认为您也会看到 SessionEnd 发生在那个时候。否则,只需等待并开始其他一些会话。系统会在某个时候出现或调用它。

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

于 2013-04-05T08:51:30.353 回答
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>

使用此脚本,您可以识别用户何时关闭浏览器

于 2013-04-05T08:51:07.743 回答