Existen varias forma de configurar para que las variables de sesión no caduque.



Puede agregar en el web.config sessionState, el valor se establece en minutos, un valor de 0 indica que la sesión nunca caducará

<configuration>

  <system.web>

    <sessionState timeout="30" />

  </system.web>

</configuration>

Otra forma es utilizar Session("LastActivity") = DateTime.Now, comprueba la diferencia entre DateTime.Now y Session("LastActivity"), si la diferencia establecida supera el tiempo de espera se puede redirige al usuario a la página de inicio o cerrar la sesión.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Session("LastActivity") = DateTime.Now

        If (DateTime.Now.Subtract(CType(Session("LastActivity"), DateTime)).TotalMinutes > 3) Then

            Response.Redirect("~/cerrarsesion.aspx")

        End If