Когда 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

btw: событие ASP.NET Session_End не запускается

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

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

Другие вопросы по тегам