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

Ale*_*x B 18 asp.net-mvc web-config session-state session-timeout

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

<sessionState mode="InProc" timeout="1"/>
Run Code Online (Sandbox Code Playgroud)

并添加以下内容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");
}
Run Code Online (Sandbox Code Playgroud)

Session_Start()在新用户访问网站时调用.我希望Session_End()在1分钟的空闲时间之后被召唤,但事实并非如此.我错过了什么吗?

Tam*_*rga 11

记住这一点:

如果您未在会话中保存任何内容,则session_end将不会触发.如果您在第一个请求中保存会话中的数据,并在同一请求中调用abandon,则session_end也不会被触发.

希望这可以帮助!

Ť

顺便说一句: ASP.NET Session_End事件没有触发


Hen*_*man 9

耐心点.应该调用该事件,但不一定在超时后立即调用.

您可以尝试使用浏览器:启动会话,等待> 1分钟,以某种方式进行回发

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