Когда 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 минуты простоя, но это не так. Я что-то пропустил?
3 ответа
Потерпи. Событие должно быть вызвано, но не обязательно сразу после тайм-аута.
Вы можете попробовать из браузера: начать сеанс, подождать> 1 минуту, сделать обратную передачу как-нибудь
Это должно помочь проверить, работает ли Timeout, и я думаю, вы также увидите, что SessionEnd происходит в это время. В противном случае, просто подождите и начните другие сеансы. Система придет или позвонит когда-нибудь.
Запомните это:
Если вы ничего не сохраните в сеансе, session_end не сработает. Если вы сохраняете данные в сеансе в первом запросе и вызываете метод отмены в том же запросе, session_end также не будет запущен.
Надеюсь это поможет!
T
Совет для тестирования: Используйте Session.Abandon
так что вам не нужно связываться с фактическим значением web.config. Просто не устанавливайте значение сеанса и звоните Session.Abandon
во время того же запроса, или он не будет сохранен.
Вот статья с дополнительной информацией о session_end