Там нет события на стороне сервера, который возникает, когда страница оставляется/закрыто. Также событие Session_End (упомянутое в других ответах) не вызывается, когда страница оставлена, так как пользователь может перейти на другие страницы одного и того же веб-приложения (и, следовательно, сеанс будет продолжать существовать).
я могу думать о 3-х возможных путях решения (или работать вокруг) этот вопрос:
- использовать ViewState для хранения данных с страницей-рамкой. Это то, для чего создается ViewState, и если у вас много данных, это не должно быть проблемой. Если у вас много данных, помните, что он будет сериализован/десериализован и отправлен клиенту/обратно на сервер для каждого запроса (что может привести к большим запросам и, следовательно, к плохой производительности).
- вместо того, чтобы данные в сессию, поместить его в Cache (с тайм-аутом низкой скользящего истечения). На своей странице вы можете получить доступ к своим данным так же, как и от сеанса, то есть data = Cache ["data"], но вы должны быть готовы к тому, что данные были удалены из кэша (вам нужно перезагрузить его снова из БД, например), если время между двумя запросами было больше времени истечения.
- использовать стороны клиента (JavaScript) OnUnload события, и вызвать некоторое действие (например, Ajax обратного вызова), чтобы удалить данные из сеанса. Но я думаю, что событие onUnload не является надежным (оно не будет запущено ни в одном случае, например, когда браузер завершается сбоем или диспетчером задач или если отключен javascript).
Для ViewState: иногда есть много данных, так как иногда обрабатывающий объект хранит свои данные и данные своих данных. для Cache, я не знаю о его производительности против viewstate или session. Для случая разгрузки, каковы ваши сомнения. – Ahmed
onUnload является непоследовательным, не уверен, что его уволят, если браузер произошел сбой, или если что-то похожее на выключение браузера. что это решение, которое мы использовали в недавнем проекте, я участвовал в –
выше, я имел в виду «принудительное завершение работы», где вы читаете «выключение браузера» –