HTTPContext object - Provides access to the entire current context (including the request object). You can use this class to share information between pages. It is created early in the asp.net pipeline. It is also used to map the request to a session. Thus, we can use this object to find out whether the session has expired or not.
In my application I am using a master page for the login page and I hope that is what you all will be doing.
This is the code which I have used to find redirect the user to another URL if the session has expired.
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (Context.Session != null)
{
//check whether a new session was generated
if (Session.IsNewSession)
{
//check whether a cookies had already been associated with this request
HttpCookie sessionCookie = Request.Cookies["ASP.NET_SessionId"];
if (sessionCookie != null)
{
string sessionValue = sessionCookie.Value;
if (!string.IsNullOrEmpty(sessionValue))
{
// we have session timeout condition!
Response.Redirect("~/ErrorPages/SessionTimeOut.aspx");
}
}
}
}
}
If Context.Session is null that means it is new request and session has not been created for it yet.
If the Context.Session is not null means we are receiving a postback. Then we can check whether the session is a new session (using Session.IsNewSession). A new session will be created in two cases, when the request has first arrived and when it is timeout scenario. Now to confirm that it is timeout scenario we will check whether there is a cookie attached to the request. We will do that using Request.Cookies["ASP.NET_SessionId"].
WARNING:- We will have to wireup the "void Session_Start(object sender, EventArgs e)" method in the Global.asax to use the Session.IsNewSession meaningfully. ASP.NET 2.0 runtime is a bit weird in the sense that it will always return the value of Session.IsNewSession as true in case the Event is not wireup!
Global.asax
void Session_Start(object sender, EventArgs e)
{
//need to wire up session_start as else sometimes (coz of buggy nature)
//Session.IsNewSession strarts giving true always.
string s = "wiring up";
}
Comments
Post a Comment