ASP.NET: Session.SessionID cambia entre solicitudes

Resuelto Seb Nilsson asked hace 14 años • 14 respuestas

¿Por qué la propiedad SessionID en el objeto de sesión en una página ASP.NET cambia entre solicitudes?

Tengo una pagina como esta:

...
<div>
    SessionID: <%= SessionID %>
</div>
...

Y la salida sigue cambiando cada vez que presiono F5, independientemente del navegador.

Seb Nilsson avatar May 20 '10 20:05 Seb Nilsson
Aceptado

Esta es la razón

Cuando se utiliza el estado de sesión basado en cookies, ASP.NET no asigna almacenamiento para los datos de la sesión hasta que se utiliza el objeto Sesión. Como resultado, se genera una nueva ID de sesión para cada solicitud de página hasta que se accede al objeto de sesión. Si su aplicación requiere una ID de sesión estática para toda la sesión, puede implementar el método Session_Start en el archivo Global.asax de la aplicación y almacenar datos en el objeto Session para corregir la ID de la sesión, o puede usar código en otra parte de su aplicación para almacenar datos explícitamente en el objeto Sesión.

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

Básicamente, a menos que acceda a su objeto de sesión en el backend, se generará un nuevo ID de sesión con cada solicitud.

EDITAR

Este código debe agregarse en el archivo Global.asax. Agrega una entrada al objeto Sesión para que arregles la sesión hasta que caduque.

protected void Session_Start(Object sender, EventArgs e) 
{
    Session["init"] = 0;
}
Claudio Redi avatar May 20 '2010 13:05 Claudio Redi

Hay otra razón, más insidiosa, por la que esto puede ocurrir incluso cuando el objeto Sesión ha sido inicializado como lo demostró Cladudio.

En Web.config, si hay una <httpCookies>entrada configurada requireSSL="true"pero en realidad no estás usando HTTPS: para una solicitud específica, entonces la cookie de sesión no se envía (o tal vez no se devuelve, no estoy seguro de qué), lo que significa que termine con una nueva sesión para cada solicitud.

Encontré este de la manera más difícil, pasando varias horas yendo y viniendo entre varias confirmaciones en mi control de fuente, hasta que encontré qué cambio específico había roto mi aplicación.

Neville Cook avatar Aug 19 '2011 14:08 Neville Cook