Reputation: 644
I have configured my Web.Config
file as follow in a ASP.NET MVC 2 project:
<sessionState mode="InProc" timeout="1"/>
And added the following in 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()
is called when a new user goes on the website. I would have expected Session_End()
to be called after 1 minute of idle time, but it's not the case. Am I missing something?
Upvotes: 18
Views: 42612
Reputation: 146110
Tip for testing: Use Session.Abandon
so you don't have to mess with your actual web.config value. Just don't set a session value and call Session.Abandon
during the same request or it won't get stored.
Upvotes: 3
Reputation: 635
Remember this:
If you don't save anything into the session, the session_end will not fire. If you're saving data in the session in the first request, and calling abandon in the same request the session_end will also not fired.
Hope this helps!
T
btw: ASP.NET Session_End event not firing
Upvotes: 13
Reputation: 273429
Be patient. The event should be called, but not necessarily right after the timeout.
You could try from a Browser: Start a session,wait > 1 minute, do a Postback somehow
This should help to verify that the Timeout works and I think you will also see the SessionEnd happening at that time. Otherwise, just wait and start some other sessions. The system will come around o calling it sometime.
Upvotes: 10