Когда Session_End () вызывается в ASP.NET MVC? - PullRequest
18 голосов
/ 03 марта 2010

Я сконфигурировал мой 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 ]

9 голосов
/ 03 апреля 2013

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

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

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

T * 1008

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

9 голосов
/ 03 марта 2010

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

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

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

1 голос
/ 09 мая 2011

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

...