我在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()
,但事实并非如此。我错过了什么吗?
答案 0 :(得分:9)
耐心等待。应该调用该事件,但不一定在超时后立即调用。
您可以尝试使用浏览器:启动会话,等待&gt; 1分钟,以某种方式做回传
这应该有助于验证超时是否有效,我认为您还会看到当时发生的SessionEnd。否则,只需等待并开始其他会话。系统会在某个时候调用它。
答案 1 :(得分:9)
记住这一点:
如果您未在会话中保存任何内容,则session_end不会 火。如果您在第一个请求中保存会话中的数据,并在。中调用放弃 同样的请求session_end也不会被解雇。
希望这有帮助!
Ť
答案 2 :(得分:1)
测试提示:使用Session.Abandon
,这样您就不必弄乱实际的web.config值。只是不要设置会话值并在同一个请求期间调用Session.Abandon
,否则它将无法存储。