Можно ли очистить сеанс всякий раз, когда браузер закрывается в asp.net?

В моем приложении asp.net я хочу очистить сеанс всякий раз, когда мой браузер закрывается или моя вкладка (если мой браузер содержит несколько вкладок) закрыта.

Пожалуйста, помогите мне выйти из этой проблемы ...

Ответы на вопрос(7)

Решение Вопроса

Короткая версия, нет.Нет надежного способа обнаружения сервером, закрыл ли клиент свой браузер. Это'Просто природа веб-разработкиАсинхронный шаблон.

Длинная версия, если этодействительно очень важно для вас; Поместите немного javascript на страницу, которая отправляет обычное сообщение на ваш веб-сайт в фоновом режиме, и установите серверный агент или службу, которая удаляет сеансы, если они не получают эти регулярные сообщения "стук сердца" сигналы.

Вы можете разместить постбэк javascript на страницеs событие unload (), но не полагайтесь на него, оно не всегда срабатывает.

 Lawrence Johnson29 июл. 2016 г., 07:30
Альтернативой настройке действия контроллера или обработчика для пульса может быть просто установка времени ожидания сеанса на одну минуту после вашего интервала пульса. Тогда браузер автоматически утилизирует егоСобственный сеанс, поскольку срок действия файла cookie истечет.
 elexis02 авг. 2017 г., 02:51
Пожалуйста, не используйте подход javascript, так как это не позволяет функции тайм-аута сделать одно из этих действий ».s ключевые функции безопасности - выход пользователя из системы, если он уходит с ПК. Я гарантирую, что если вы сделаете это и проведете профессиональный аудит безопасности на своем сайте, отсутствие тайм-аута будет помечено как проблема.

Вы можете использовать событие Session_End Global.aspx

//For Specific Session
Session.Remove("SessionName");

//All the Session
Session.Abandon();
 Saravanan06 нояб. 2012 г., 10:45
iShare: Извините, что выигралт во время закрытия браузера ...
 Dirk Strauss07 окт. 2015 г., 16:09
Это вызывается только когда время сеанса истекло.
 Jon06 нояб. 2012 г., 10:54
тот'Правильно - событие сработает, если период ожидания сеанса (20 минут для IIS, я полагаю, если не задан явно) достигнут без дальнейших запросов от браузера. Так что'Это предположение, и часто это происходит через некоторое время после того, как пользователь фактически перестает использовать ваш сайт.

Да. Во-первых, браузер автоматически очищает сессию, когда браузер закрыт. Вы можете попытаться захватить событие закрытия браузера или закрытия вкладки в браузере, используя функцию javascript, например, перед выгрузкой и выгрузкой. Главным образом перед выгрузкой события захватывает событие закрытия браузера в Chrome, Firefox, IE 11.

Это происходит по умолчанию всякий раз, когда вы закрываете браузер, и этоне только для ASP.NET. Это's для большинства языков программирования на стороне сервера, которые имеют состояние сеанса. По сути, любой добавляемый файл cookie, который неt указать дату истечения срока действия, будет удалена при закрытии браузера.

Где это неПрименить, это когда вы закрываете вкладку, над которой вы не будете иметь никакого контроля, потому что событие закрытия вкладки не будет отправлено обратно на веб-сервер.

В качестве альтернативы вы можете проверять свое предыдущее состояние сеанса при каждом новом открытии браузера и можете Session.clear () или Session.abandon () предыдущего сеанса.

Это гарантирует, что при каждом запуске приложения вы будете получать новый сеанс.

используйте BasePage в вашем приложении .net.Проверьте файл session.sessionid при загрузке базовой страницы.Подробнее о том, как обнаружить новую сессию на базовой странице.BasePage.Session.Link

Надеюсь, что это помогает с уважением Shaz

public class BasePage : Page
{

            protected string mySessionId;   

            private CurrentUser _currentUser;
            public CurrentUser _CurrentUser
            {
                get { return ((CurrentUser)HttpContext.Current.Session["myCurrentUser"]); }
                set { _currentUser = value; }
            }


            protected override void OnLoad(EventArgs e)
            {

                if (Session["myCurrentUser"] != null)
                {
                    if (_CurrentUser.ProUser)
                    {

                       mySessionId = Session.SessionID; // it means New Session

                    }

                    if (!mySessionId.IsNullOrDefault() && mySessionId != Session.SessionID)
                    {
                        Session.Abandon(); //Abandon current session and start new one                

                    }
                }


            }

}

Я думаюcookies может лучше удовлетворить ваши требования здесь для управления сессиями.

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

 Asif Mushtaq06 нояб. 2012 г., 13:00
@ РенеWolferinkL: это означает, что данные сеанса не должны храниться на сервере и должны быть вместе с вашим вызовом, чтобы вы нене нужно беспокоиться об очистке данных на сервере.
 René Wolferink06 нояб. 2012 г., 11:00
Какое отношение куки имеют к браузеру?близкое событие? Если пользователь закрывает свой браузер, ничего не происходит. Cookie будет там, у клиента, ничего не делая.

Вы можете попытаться сделать это с помощью JavaScript. Проверьте это на:

http://www.codeproject.com/Tips/154801/How-to-end-user-session-when-browser-closed

Ваш ответ на вопрос