Session_End не вызывает после закрытия браузера
Я использую настройки ниже в 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 ответа
Нет 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>
С помощью этого скрипта вы можете определить, когда пользователь закрывает браузер.
Событие не будет вызвано, если ваш браузер закрыт, оно будет вызвано после истечения времени ожидания.
Событие должно быть вызвано, но не обязательно сразу после тайм-аута.
Вы можете попробовать из браузера: начать сеанс, подождать> 1 минуту, сделать обратную передачу как-нибудь
Это должно помочь проверить, работает ли Timeout, и я думаю, вы также увидите, что SessionEnd происходит в это время. В противном случае, просто подождите и начните другие сеансы. Система придет или позвонит когда-нибудь.