When is Session_End() called in ASP.NET MVC?
Asked Answered
C

3

18

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?

Christogram answered 3/3, 2010 at 16:54 Comment(0)
Q
10

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.

Quagmire answered 3/3, 2010 at 17:4 Comment(1)
Interesting, I would have figured it'd call it right at the 1 minute markSeduction
N
13

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

Nylons answered 3/4, 2013 at 1:59 Comment(0)
Q
10

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.

Quagmire answered 3/3, 2010 at 17:4 Comment(1)
Interesting, I would have figured it'd call it right at the 1 minute markSeduction
P
3

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.

Popple answered 9/5, 2011 at 3:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.