我在web.config中使用以下设置
<sessionState mode="InProc" cookieless="false" timeout="10"/>
...
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="10"/>
并且在Session_End
中根据会话的值我更改数据库中列的值(如果此列的值为1表示用户在线)但有时在用户关闭浏览器的一天后此列的值钢为1(表示Session_End用户关闭浏览器后不会调用)
答案 0 :(得分:1)
如果您的浏览器已关闭,则不会调用任何事件,超时后将调用该事件。
应该调用该事件,但不一定在超时后调用。
您可以尝试使用浏览器:启动会话,等待&gt; 1分钟,以某种方式做回传
这应该有助于验证超时是否有效,我认为您还会看到当时发生的SessionEnd。否则,只需等待并开始其他会话。系统会在某个时候调用它。
答案 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>
使用此脚本可以确定用户何时关闭浏览器