何时在ASP.NET MVC中调用Session_End()?

时间:2010-03-03 16:54:33

标签: asp.net-mvc web-config session-state session-timeout

我在ASP.NET MVC 2项目中配置了我的Web.Config文件:

<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()。我希望在闲置1分钟后调用Session_End(),但事实并非如此。我错过了什么吗?

3 个答案:

答案 0 :(得分:9)

耐心等待。应该调用该事件,但不一定在超时后立即调用。

您可以尝试使用浏览器:启动会话,等待&gt; 1分钟,以某种方式做回传

这应该有助于验证超时是否有效,我认为您还会看到当时发生的SessionEnd。否则,只需等待并开始其他会话。系统会在某个时候调用它。

答案 1 :(得分:9)

记住这一点:

  

如果您未在会话中保存任何内容,则session_end不会   火。如果您在第一个请求中保存会话中的数据,并在。中调用放弃   同样的请求session_end也不会被解雇。

     

希望这有帮助!

     

Ť

顺便说一句: ASP.NET Session_End event not firing

答案 2 :(得分:1)

测试提示:使用Session.Abandon,这样您就不必弄乱实际的web.config值。只是不要设置会话值并在同一个请求期间调用Session.Abandon,否则它将无法存储。

相关问题