#c# #asp.net
#c# #asp.net
Вопрос:
Что делает asp.net что делать в фоновом режиме, когда сеанс истекает? Полностью ли удален сеанс, или мне нужно добавить что-то подобное Session.Abandon();
в мое Session_End
событие в Global.asax?
Комментарии:
1. Что именно вы подразумеваете под «удаленным»? Вы спрашиваете,
IDisposable.Dispose
вызывается ли для всех объектов в сеансе?
Ответ №1:
Состояние в памяти — объект удаляется из списка сеансов и Session_End
вызывается. Для состояния сеанса SQL ничего не происходит, и данные больше не будут возвращаться для будущих запросов с тем же идентификатором сеанса, поскольку они не соответствуют условию (ИДЕНТИФИКАТОР не истекший).
Вам не нужно вызывать Session.Abandon()
in Session_End
, потому что это событие вызывается, когда сеанс истекает (что именно это Abandon
и делает).
Примечания
- обычные веб-приложения, которые используют состояние сеанса вне процесса (SQL в государственной службе), не получат
Session_End
событие, потому что состояние вне процесса не запускает его. - если вам нужно очистить состояние сеанса SQL, вы можете запустить задачу clenaup, которая удаляет строки для истекших сеансов.
Ответ №2:
Сеанс полностью удален. Вам не нужно делать ничего особенного. Session_End
это событие, которое позволяет вам выполнять какие-либо действия после удаления сеанса.
Session.Abandon()
это команда, которая позволяет вам завершить сеанс по желанию.
Примечание: Если вы не введете ни одной переменной в Session
, то Session_End
не сработает.
Комментарии:
1. Обратите внимание, что в этом ответе явно говорится о состоянии сеанса в процессе.
2. @Ofer Zelig, Привет, Офер, я знаю, что прошло много времени с тех пор, как вы предлагали это решение, и я хотел бы попросить у вас разъяснений. Итак, когда сеанс истекает, это означает, что все мои предпочтения исчезнут, например, языковые предпочтения, и после истечения срока действия мне придется повторно выбирать язык снова. Я знаю, что это может быть странный вопрос, и вы можете сказать, что логично, если сеанс исчез, а затем и настройки. Поскольку я всего лишь новичок, мне интересно, может быть, есть нюансы. Еще один странный вопрос, посмотрите, истекает ли срок действия cookie, будет ли это означать также истечение сеанса, поскольку cookie и сеанс подключены
Ответ №3:
Сеанс будет очищен, если вы использовали поставщика сеансов inproc, поэтому вам не нужно будет вызывать Session.Abandon()
.