2008-11-13 2 views
4

У меня есть страница ASP.net. Когда я закрываю веб-страницу, мне нужно очистить переменные сеанса.Закрытие браузера должно фактически очистить переменные сеанса идентификатор сеанса ASP.net

Как справиться с этим Мне нужно поддерживать тайм-аут до 20 минут. Если он закрывает и Войти на любое количество раз в 20 минут истекло Время

Есть ли Possiblity для очистки идентификатор сеанса ASP.net

+0

Разве это не дубликат http://stackoverflow.com/questions/283591/ aspnet-session-destroy-if-he-closes-the-browser – 2008-11-13 14:51:53

+0

Извините, но я думаю, что вы, возможно, пытаетесь решить неправильную проблему здесь. Зачем вам немедленно очищать состояние сеанса? – Kramii 2008-11-13 15:25:50

ответ

5

[EDIT] Как и другие предложили, сеанс должен время в конце концов, но если вы хотите закрыть сеанс до таймаута (например, для очистки больших объектов сеанса) И у вас есть javascript ...

Вы можете сделать это с помощью обработчика window.onbeforeunload, который отправляется обратно в выйдите из страницы.

function CloseSession() 
{ 
    location.href = 'SignOut.aspx'; 
} 
window.onbeforeunload = CloseSession; 

Вы также можете сделать это через AJAX. Страница SignOut.aspx (или любая другая используемая вами платформа) должна отказаться от сеанса пользователя.

+1

Просто будьте готовы, что в случае сбоя браузера это не будет вызвано. – 2008-11-13 14:23:59

5

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

Javascript не является хорошим вариантом, так как вы можете отключить его на стороне клиента.

2

Что делать, если процесс браузера завершается?

Here трюк

Вы не должны так много переменных сеанса, что они требуют очистки. См. Сообщение this для других вариантов.

11

Вы не можете этого сделать.

  1. Вы не можете полагаться на событиях, происходящих в браузере
  2. Там нет способа сервера может обратиться в браузер, чтобы увидеть, если он жив

Вы не контролируете браузер конца -user. Пользователь может закрыть браузер, сбой, отключиться от Интернета, отключить или отключить javascript и т. Д. И т. Д. Или пользователь может просто ввести другой URL-адрес (и после этого пользователь может вернуться на вашу страницу с помощью кнопки «Назад» и ожидайте продолжения своей сессии с вашего сайта).

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

0

Я не знаю конкретно, как ASP.Net реализует свои сеансы, но часть файла cookie RFC заключается в том, что куки сеанса (те, у которых отсутствует конкретная дата истечения срока действия), очищаются всякий раз, когда браузер закрыт.

Несомненно, есть способ получить ASP.Net, используя правильные сеансовые куки, а не с фиксированным таймаутом?

-1

Здравствуйте Try This Javascript функция

function ConfirmClose() 
{ 
if (event.clientY < 0) 
{ 
     /* Your asynchronouse request to the page and call that function*/ 
} 
} 
/*now call this method on event of javascript*/  

я didn'try это, но он просто вышел из ума