Session.Abandon()
уничтожает сессию и , событие Session_OnEnd инициировано.
Session.Clear()
всего удаляет все значения (содержание) от Объекта. Сессия с тем же ключом все еще жива.
Так, если Вы используете Session.Abandon()
, Вы проигрываете ту определенную сессию, и пользователь получит новый сеансовый ключ. Вы могли использовать его, например, когда пользователь выходит из системы.
Использование Session.Clear()
, если Вы хотите это пользователь, остающийся на той же сессии (если Вы не хотите, чтобы пользователь повторно вошел в систему, например) и сбрасывают всю сессию определенные данные.
Я имел эту проблему и попробовал обоих, но должен был согласиться на удаление дерьма как "pageEditState", но не удаление информации о пользователе, чтобы я не должен искать его снова.
public static void RemoveEverythingButUserInfo()
{
foreach (String o in HttpContext.Current.Session.Keys)
{
if (o != "UserInfoIDontWantToAskForAgain")
keys.Add(o);
}
}
Я все еще не уверен, что это за реальный пример, где вы бы использовали Session.Abondon ()
, Session.Clear ()
.
Я могу понять ... если пользователь нажимает на вашу ссылку выхода, и вы перенаправляете его на свою страницу «вы вышли из системы» ... их сеанс браузера все еще продолжается, но вы хотите удалить сохраненную информацию в сеансе. Если вы вышли из сеанса, сразу же будет создан новый сеанс для страницы «вы вышли из системы».