¿Cómo obtener una lista de claves del estado de sesión ASP.NET respaldado por el servidor SQL?

StackOverflow https://stackoverflow.com/questions/153912

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy buscando una buena manera de visualizar los datos de estado de sesión de ASP.NET almacenados en el servidor SQL, preferiblemente sin crear una página .aspx desechable. ¿Hay una buena manera de obtener una lista de las claves (y los datos serializados, si es posible) directamente del servidor SQL?

Idealmente, me gustaría ejecutar algunos comandos T-SQL directamente en la base de datos para obtener una lista de las claves de sesión que se han almacenado para un ID de sesión determinado. También sería bueno ver los datos serializados para cada clave.

¿Fue útil?

Solución

¿Puede elaborar un poco, no hay ninguna referencia a un HttpContext disponible (también puede usar esto desde el código de backend FYI), lo que le impide utilizar la serialización y el diccionario de claves integrados?

EDITAR, en respuesta a su actualización. Creo que la base de datos ASPState crea y destruye tablas temporales según sea necesario, no tiene tablas permanentes que pueda consultar, observe los procedimientos almacenados y debería encontrar uno en la línea de "TempGetItem", puede usar este sproc directamente, o examine su fuente para obtener más información.

Otros consejos

Cuando ejecuta la aplicación asp.net con el modo de sesión del servidor SQL, crea dos tablas, dbo.ASPStateTempApplications y dbo.ASPStateTempSessions. Puede encontrar su aplicación en la primera tabla y usarla para consultar sesiones abiertas desde la segunda tabla. La tabla ASPStateTempSessions almacena dos columnas SessionDataShort y SessionDataLong. Toda la información de la sesión es binaria. Debe saber qué tipos de objetos se almacenan en la sesión si desea volver a deserializarlos nuevamente y ver el contenido.

He intentado esto recientemente y funciona bien. De hecho, para una aplicación compleja, vale la pena tener algunas herramientas para ver y analizar los datos de la sesión para asegurarnos de que no almacenemos objetos no deseados y los dejemos en la base de datos por mucho tiempo, ya que puede ralentizar las cosas.

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