it-roy-ru.com

Когда 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 минуты простоя, но это не так. Я что-то пропустил?

17
Alex B

Потерпи. Событие должно быть вызвано, но не обязательно сразу после тайм-аута.

Вы можете попробовать из браузера: начать сеанс, подождать> 1 минуту, сделать обратную передачу как-нибудь

Это должно помочь проверить, работает ли Timeout, и я думаю, вы также увидите, что SessionEnd происходит в это время. В противном случае, просто подождите и начните другие сеансы. Система придет или позвонит когда-нибудь.

9
Henk Holterman

Запомните это:

Если вы ничего не сохраните в сеансе, session_end не будет Пожар. Если вы сохраняете данные в сеансе в первом запросе, а вызовы отменяются в тот же запрос session_end также не будет выполнен.

Надеюсь это поможет!

T

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

9
Tamás Varga

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

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

1
Simon_Weaver