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