Redirect to login page after session timeout

Description

You can use the Page_Initevent in the global.asax

Sample

Protected Sub Page_Init(sender As Object, e As EventArgs)
 If Context.Session IsNot Nothing Then
  If Session.IsNewSession Then
   Dim newSessionIdCookie As HttpCookie = Request.Cookies("ASP.NET_SessionId")
   If newSessionIdCookie IsNot Nothing Then
    Dim newSessionIdCookieValue As String = newSessionIdCookie.Value
    If newSessionIdCookieValue <> String.Empty Then
     ' This means Session was timed Out and New Session was started
     Response.Redirect("Login.aspx")
    End If
   End If
  End If
 End If
End Sub

More Information

  • Detecting Session Timeout And Redirect To Login Page In ASP.NET

Session_End is a server-side event, meaning it is triggered on the web server and has nothing to do with a request by the client. This is why the Request is unavailable.

You have two choices in this matter:

  1. On each client request, check if a specific Session variable is set. If it is not, it means the previous Session has expired and the new Session must be populated. (I am assuming this is why you want to check for Session expiration)

  2. Have a javascript call on the client that periodically goes back to the server to check if the Session is still valid. If the Session has expired, you can redirect the user to the login page.

samples of different redirect methods

location.href = "login.aspx";
// or you can use 
location.assign("login.aspx");
//for redirecting without storing in history
location.replace("login.aspx")

Don't forget to add ?ReturnUrl=[current url] to the login redirect path.

HTH