Когда вызывается Session_End() в ASP.NET MVC?
Я сконфигурировал свой файл Web.Config
следующим образом в проекте ASP.NET MVC 2:
<sessionState mode="InProc" timeout="1"/>
И добавил в Global.asax.cs
следующее:
protected void Session_End(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_End");
}
protected void Session_Start(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_Start");
}
Session_Start()
вызывается, когда новый пользователь переходит на веб-сайт. Я бы ожидал, что Session_End()
будет вызываться через 1 минуту простоя, но это не так. Я что-то пропустил?
Ответы
Ответ 1
Будьте терпеливы. Событие следует вызывать, но не обязательно сразу после таймаута.
Вы можете попробовать из браузера: начать сеанс, подождать > 1 минута, сделать Postback как-то
Это должно помочь проверить, работает ли Timeout, и я думаю, что вы также увидите SessionEnd, происходящее в то время. В противном случае просто подождите и начните другие сеансы. Система придет вокруг, когда-нибудь вызовет ее.
Ответ 2
Помните об этом:
Если вы ничего не сохраняете в сеансе, session_end не будет Огонь. Если вы сохраняете данные в сеансе в первом запросе и вызываете отказ в тот же запрос session_end также не будет запущен.
Надеюсь, это поможет!
Т
Кстати:
Событие Session_End ASP.NET не запускается
Ответ 3
Совет для тестирования: используйте Session.Abandon
чтобы вам не приходилось связываться с фактическим значением web.config. Просто не устанавливайте значение сеанса и не вызывайте Session.Abandon
во время того же запроса, иначе он не будет сохранен.