Когда вызывается 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

btw: ASP.NET session_end событие не срабатывает


совет для проверки: использовать Session.Abandon Так что вам не придется возиться с Вашего web.значение конфигурации. Просто не устанавливайте значение сеанса и вызывайте Session.Abandon во время того же запроса или он не будет сохранен.

вот статья с дополнительной информацией о session_end