Pregunta

Así que configuré el Estado de sesión de SQL Server usando SQL Server 2008 y la base de datos temporal y hoy decidí buscar en los datos de las tablas solo para encontrar esto en la tabla ASPStateTempApplications:

AppId AppName
538231025 / lm / w3svc / 1 / root
611758131 / lm / w3svc / 3 / root
802488340 / lm / w3svc / 4 / root
-940085065 / lm / w3svc / 4 / root / webapp
685293685 / lm / w3svc / 5 / root
1210055478 / lm / w3svc / 5 / root / webapp

Tenemos 2 servidores web con carga equilibrada.

Cuando miro los identificadores de las aplicaciones web de ambos servidores, veo que web1 tiene app1 con id 4 y web2 tiene app1 con id 5. Lo mismo ocurre con la otra aplicación. web1 tiene app2 con id de 1 y web2 tiene app2 con id de 3.

Mi sentido común me dice que los servidores web no comparten sesiones ya que la identificación de la sesión usa el appid. ¿Estoy en lo correcto? Si es así, ¿por qué este detalle menor no es tan obvio en la documentación? ¿Debo hacer que los identificadores coincidan en ambos servidores web?

¿Fue útil?

Solución

El AppId se usa durante la creación del SessionId, para ayudar a evitar colisiones de una aplicación a otra. Se crea al calcular un hash de la ruta de la aplicación IIS.

En su entorno, el flujo podría ser algo como esto:

  1. El servidor A crea una ID de sesión, la establece en una cookie y almacena algunos datos en la sesión correspondiente (una fila en ASPStateTempSessions). La columna de ID de sesión se crea concatenando la ID de sesión con el AppID.
  2. El servidor B recibe una solicitud con una ID de sesión preexistente y la utiliza para buscar los datos de sesión asociados de la tabla ASPStateTempSessions. Si el ID de la aplicación es diferente, la clave generada también será diferente.

El efecto neto de tener varios servidores con AppIds diferentes que comparten las mismas sesiones es que las ID creadas por un servidor no colisionarán con las de otro servidor, y las máquinas con AppIds diferentes no verán las sesiones de los demás.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top