Завершить сеанс доступа? - PullRequest
3 голосов
/ 07 февраля 2012

Я пытаюсь принудительно «войти» в систему, когда пользователь был неактивен или сеанс завершился (из-за неактивности или, что более важно, после закрытия браузера). Я не хочу использовать какое-либо глупое решение AJAX, чтобы каждые несколько минут отправлять сообщения «im alive» или звонить, когда браузер закрыт.

У меня сложилось впечатление, что если вы сохраните объект в сеансе и достигнете события Session_End, то вы не сможете получить доступ к чему-либо, хранящемуся в сеансе, после его завершения. Но из проведенного мной тестирования выяснилось, что это, вероятно, последний шанс получить доступ к объекту.

Может ли это быть правдой? это надежно?

здесь используется ASP.NET 4.0.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

Обычно выполняются две вещи.

Первое - это то, что таймер javascript добавляется к клиенту не как сердцебиение, а как напоминание.Если они близки к окончанию сеанса, то просто говорится, что «сеанс подходит к концу. Вы все еще там?»Если это так, то он делает «глупую» запись, чтобы сервер продолжал сеанс.Это просто для удобства пользователей.

Второе (и точка вашего вопроса) заключается в том, что вы помещаете что-то в session_end для очистки сессии.Надежная?хорошо .. большинство времени.

Session_End не запустится, если пул приложений будет переработан.Однако при условии, что пул приложений в порядке, тогда да, он будет выполняться после истечения сеанса.Пул приложений может быть переработан по МНОГИМ причинам, начиная от сбоя приложения и заканчивая чрезмерным использованием памяти, просто потому, что прошло время с момента последнего сброса.Это настраивается в IIS.

Буду ли я доверять session_end?Нет, не 100%.Конечно, я бы не помещал в объект сеанса ничего, что в любом случае требовало бы от меня 100% доверия.

0 голосов
/ 07 февраля 2012

Для регистрации тайм-аута. Вы можете использовать Глобальные события для регистрации по тайм-ауту. Смотрите эту ссылку для порядка событий http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/5771721

...