Что происходит, когда сеанс истекает?

#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() .