Вопрос

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

Это было полезно?

Решение

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

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

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

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

Session.Abandon(); отменяет ток Session.

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

Другие советы

Session.Abandon() 

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

Session.Clear()

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

Сравните с методом Session.abandon (), Session.clear () не создает нового сеанса, он просто сделает все переменные на сеансе в NULL.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow