2011-06-02 16 views
5

¿Hay alguna forma de administrar cuántas sesiones tiene una aplicación en ejecución asp.net? Quiero exhibirlo en una página, tal vez con alguna otra información importante, si está disponible. Y, ¿cómo puedo hacerlo?Cómo contar sesiones en la aplicación de servidor asp.net

+0

Sí, lo es! Pero si podemos obtener información más valiosa, como el consumo de recursos, ¡debería ser genial! – Alex

+0

Ok. En mi respuesta, podría recuperar, actualizar y almacenar una matriz (en lugar de elementos individuales de la aplicación) de la información del usuario de la sesión también. Tendría una buena variedad de toda su información de usuario. –

+0

es su aplicación usando *** stateserver *** o *** InProc ***? Tal vez usando _Performance Monitor stats_ (mediante programación mediante * WMI *) – Kiquenet

Respuesta

10

En global.asax, haga lo siguiente:

controlar el evento Application.Start añadiendo lo siguiente:

Application["LiveSessionsCount"] = 0; 

controlar el evento Session.Start añadiendo lo siguiente:

Application["LiveSessionsCount"] = ((int) Application["LiveSessionsCount"]) + 1; 

controlar el evento Session.End añadiendo el siguiente:

Application["LiveSessionsCount"] = ((int) Application["LiveSessionsCount"]) - 1; 

Para recuperar sesiones cuentan dentro de su página de escribir lo siguiente:

int LiveSessionsCount = (int) Application["LiveSessionsCount"]; 
+0

En stateserver sesion_end no funcionará, entonces lo que hará – Haris

+1

@Haris Leer: http://www.codeproject.com/Articles/21156/ASP-NET-HttpModule-for-handling-session-end-with-S –

2

Quizás en su archivo global.asax los eventos Session_Start y Session_End, puede almacenar información de sesión en una matriz de información de usuario dentro del objeto de estado de la aplicación. Luego puede administrar esta matriz desde el estado de la aplicación en toda la aplicación.

+0

Esta solución cuenta todos los valores almacenados en el objeto de la aplicación, no solo el número de sesiones. También desperdicia una gran cantidad de memoria para sitios ocupados. Todo lo que necesitas es un solo entero. – ShadowChaser

+1

@ShadowChaser Él quiere 'administrar' la información de la sesión, no solo tener un recuento de cuántas personas han iniciado sesión. Aunque, debería tener una única matriz dentro del estado de la aplicación que almacena esta información. –

+0

Nota: * stateserver * 'Session_End' no funcionará, solo para *** InProc *** – Kiquenet

Cuestiones relacionadas