Session_End
is fired internally by the server, based on an internal timer. Because of that, there is no HttpRequest
associated when that happens. That is why Response.Redirect
or Server.Transfer
does not make sense and will not work.
I see in the past workarounds about this but never tried, you should make Base class which every page inherit. OnInit
in the base class add this. Base Class inherit UI.Page
. If you don't use base class logic you should add this logic to every page which is not nice.
protected override void OnInit(System.EventArgs e)
{
Response.AddHeader("Refresh",Convert.ToString((Session.Timeout * 60) + 5));
if(Session.IsNewSession)
Response.Redirect(“Logout.aspx”);// or another page which you want.
}
The page should be refreshed after 5 seconds once the Session is expired, with the if you will catch that the session is new and you will redirect.
NullReferenceException
are the same. Please see "What is a NullReferenceException in .NET?" for some hints. – Interrupter