ASP.NET Why session_end event is not getting called when we close a browser?

Asked
Viewd1264

1

Why session_end event is not getting called when we close a browser ?

2 ответов

7

Потому что сеанс не заканчивается при закрытии браузера. Сеанс завершается по истечении времени ожидания или явно завершается на стороне сервера.

Закрытие браузера не имеет ничего общего с подключением к серверу. Соединение уже разорвано, как только страница полностью загружена (исключая какой-то фанковый ajax).

  • Файлы cookie используются для сопоставления запроса от браузера с сохраненным состоянием сеанса на сервере, поэтому очистка файла cookie означает только то, что будущие запросы не будут коррелированы. Это все еще не означает, что сохраненное состояние сеанса на сервере очищается (до истечения времени ожидания сеанса).

    jwanagel01 сентября 2009, 07:04
  • Но когда вы закрываете браузер и при закрытии он очищает файлы cookie, сеанс автоматически закрывается.

    rahul01 сентября 2009, 06:51
0

Silky has right, but you can try call ajax oneway method binded to onbeforeunload event and on server you can handle this event. But it'll be probably not very reliable and works not in all browsers.

<body onbeforeunload="ClosingWindowAjaxEventHandler();">