2015-08-18 3 views
0

У меня есть два вопроса. Я разберу свои вопросы на две части и даю обзор. Я не совсем уверен в коде, который мне нужно опубликовать, поэтому, если я пропустил какой-то из них, пожалуйста, дайте мне знать, и я помогу.Как вызвать Session_End при закрытии браузера?

Обзор:

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

Вопрос 1:

Как вызвать Session_End, когда браузер закрыт?

Я читал о том, как закрыть его, и кажется, что единственный способ определить, завершился ли сеанс, когда браузер закончился, - это использовать что-то, называемое «InProc» в моей веб-конфигурации. Я дал ему попытку, и это, казалось, ничего не изменило. Поэтому мне интересно, есть ли другой способ.

Session_End:

protected void Session_End() { 
      if (User.Identity.IsAuthenticated) { 

      } 
     } 

Вопрос 2: Как подписать пользователя на Session_End?

Как только программа вызвала пустоту, мне нужно подписать пользователя, поскольку это вызывает ошибку в моей программе. Я использую Authentification manager.

Session_End:

protected void Session_End() { 
      if (User.Identity.IsAuthenticated) { 
       AuthenticationManager.SignOut(); 
      } 
     } 
+1

http://stackoverflow.com/a/23633068/3919130 Помогает ли это? – PrinceTyke

+0

@PrinceTyke Спасибо, но не особо –

ответ

2

Использование InProc сеансов, метод Session_End вызывается, когда время сеанса вне. Это (по умолчанию) 20 минут после пользователь последний раз обращался к вашему сайту (запросил новую страницу). Обратите внимание, что эти 20 минут можно было потратить осторожно, читая одну страницу вашего сайта - его сеанс все еще закрыт.

Существует no Способ обнаружения, когда пользователь закрыл свой браузер или перешел от вашего сайта.

+0

Хорошо, спасибо. Мне нужно найти другой способ –

0

Вам необходимо использовать файл Global.asax. Он должен уже содержать этот метод, все, что вам нужно сделать, это добавить кишки вашего кода.

protected void Session_End(object sender, EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     AuthenticationManager.SignOut(); 
    } 
} 
+0

Да, но Session_End все еще не вызывается, когда браузер закрыт. По-видимому, вы не можете обнаружить, когда браузер закрыт и все равно запускает код –

Смежные вопросы