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