В чем разница между Session.Abandon () и Session.Clear () в ASP.Net? - PullRequest
13 голосов
/ 11 июня 2010

В чем разница между Session.Abandon() и Session.Clear() в ASP.Net?

Ответы [ 3 ]

16 голосов
/ 11 июня 2010

Session.Abandon() завершит текущий сеанс. Session_End будет запущено, и следующий запрос вызовет событие Session_Start.

Session.Clear просто очистит данные сеанса, и сеанс останется живым.

Идентификатор сеанса останется неизменным в обоих случаях, если браузер не закрыт.

В двух словах:

Session.Abandon(); отменяет текущий Session.

Session.Clear(); очищает все значения из состояния Session.

1 голос
/ 27 сентября 2016
Session.Abandon() 

уничтожит / уничтожит весь сеанс.

Session.Clear()

удаляет / очищает данные сеанса (т.е. ключи и значения из текущего сеанса), но сеанс будет жив.

По сравнению с методом Session.Abandon (), Session.Clear () не создает новый сеанс, он просто устанавливает все переменные в сеансе в NULL.

Идентификатор сеанса останется одинаковым в обоихслучаи, пока браузер не закрыт.

0 голосов
/ 17 июня 2017

Некоторые вещи, которые следует отметить из моего опыта:

Session.Abandon() не делает недействительным текущий сеанс.Старые запросы выполняются нормально, если вы воспроизводите их.

Но после того, как вы ее вызвали, настройка содержимого словаря оставленных сеансов не имеет постоянного эффекта.Следующий запрос получает новый новый словарь сеанса (даже если вы используете тот же идентификатор сеанса, воспроизводя предыдущий запрос), и ни одно из ваших предыдущих изменений в нем (после вызова метода) отсутствует.

Итак,кажется, что Session.Abandon() полностью останавливает сохранение всей сессии, в то время как Session.Clear() только удаляет его данные.

И, кроме того, если вам нужно защитить приложение от атак воспроизведения, вам следует добавить некоторую логикукоторый проверяет сеансы и не зависит ни от одного из этих встроенных методов.Похоже, что они предназначены только для управления сохранением данных сеанса, а не для защиты вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...