В ASP.NET, когда мне следует использовать Session.Clear () вместо Session.Abandon ()?
Session.Abandon () уничтожает сеанс иСобытие Session_OnEnd инициируется.
Session.Clear () просто удаляет все значения (содержимое) из объекта.Сеанс с тем же ключом все еще жив.
Итак, если вы используете Session.Abandon (), вы потеряете этот конкретный сеанс, и пользователь получит новый ключ сеанса.Вы можете использовать его, например, когда пользователь выходит из системы.
Используйте Session.Clear (), если вы хотите, чтобы пользователь оставался в том же сеансе (если вы не хотите, чтобы он, например, повторно входил в систему) исбросить все данные, относящиеся к его сеансу.
В чем разница между Session.Abandon () и Session.Clear ()
Очистить - Удалитьвсе ключи и значения из коллекции состояния сеанса.
Отменить - удаляет все объекты, хранящиеся в сеансе.Если вы не вызываете метод Abandon явно, сервер удаляет эти объекты и уничтожает сеанс по истечении времени сеанса.Он также вызывает такие события, как Session_End.
Session.Clear можно сравнить с удалением всех книг с полки, тогда как Session.Abandon больше похож на выбрасывание всей полки.
...
Как правило, в большинстве случаев вам нужно использовать Session.Clear.Вы можете использовать Session.Abandon, если вы уверены, что пользователь собирается покинуть ваш сайт.
Итак, вернемся к различиям:
- Отмена вызывает запрос Session_End.
- Clear удаляет элементы немедленно, Abandon - нет.
- Abandon освобождает объект SessionState и его элементы, чтобы он мог собирать мусор.
- Clear сохраняет SessionState и связанные с ним ресурсы.
Session.Clear () или Session.Abandon ()?
Вы используете Session.Clear (), когда вы не хотите завершать сеанс, а просто очищаете все ключи в сеансе и повторно инициализируете сеанс.
Session.Clear () не вызоветобработчик события Session_End в вашем файле Global.asax для выполнения.
Но с другой стороны Session.Abandon () полностью удалит сеанс и выполнит обработчик события Session_End.
Session.Clear ()это все равно, что убрать книги с книжной полки
Session.Abandon () это все равно что бросить книжную полку.
Вопрос
Я отмечаю нанекоторые сеансы, если они не равны нулю при загрузке страницы.если один из них равен нулю, я хочу очистить все сеансы и перенаправить на страницу входа?
Ответ
Если вы хотите, чтобы пользователь снова вошел в систему, используйте Session.Abandon.