Si creas una página en ASP.NET y en su evento Load pones lo siguiente:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Label1.Text = Session.SessionID & " " & Session("idsesion")
   Response.Write(Session.SessionID)
End Sub

notarás que cada vez que oprimes Refresh o Actualizar en tu navegador, la variable de sesión se modifica. Definitivamente es raro porque uno siempre ha sabido que la variable de sesión debe ser la misma durante todo el tiempo que el visitante permanece visitando la aplicación.

Bueno, la variable de sesión permanece igual siempre y cuando se coloque algún valor en el estado de la sesión. (yo tampoco entiendo muy bien la razón).

El caso es que para solucionar el problema “de raíz”, creé una variable de sesión en el código del archivo Global.asax, justo cuando se crea la sesión (checa la línea 20):

<%@ Application Language="VB">
 
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
   ' Code that runs on application startup
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
   ' Code that runs on application shutdown
End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
   ' Code that runs when an unhandled error occurs
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
   ' Code that runs when a new session is started
   'La siguiente linea evita que session.sessionid se modifique cada
   'vez que se oprime Refresh en el navegador
   Session("idsesion") = Session.SessionID
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
   ' Code that runs when a session ends.
   ' Note: The Session_End event is raised only when the sessionstate mode
   ' is set to InProc in the Web.config file. If session mode is set to StateServer
   ' or SQLServer, the event is not raised.
End Sub
</script>

Esto hace que el estado de la sesión permanezca sin modificarse y ahora el código del Response.Write(Session.SessionID) citado anteriormente regresa siempre el mismo valor. =)

Un comentario sobre “Cómo evitar que la variable Session.SessionID cambie

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


+ 2 = once