tutorial puede programacion para net lenguaje habilitar ejecutar definicion debug configurar caracteristicas aspx asp asociar aplicaciones aplicacion asp.net iis session iis-7 iis-6

puede - ¿Cómo puedo determinar la cantidad de usuarios en un sitio ASP.NET(IIS)? ¿Y su información?



habilitar debug web config (7)

¿Hay alguna manera de determinar la cantidad de usuarios que tienen sesiones activas en una aplicación ASP.NET? Tengo una página de administrador / herramientas en una aplicación en particular, y me gustaría mostrar información sobre todas las sesiones abiertas, como el número de sesiones y quizás las direcciones de las máquinas que solicitan, u otra información de credenciales para cada usuario.


La forma en que he visto esto hecho en el pasado es agregar código adicional al evento Session_OnStart en el archivo Global.asax para almacenar la información de una manera independiente de la sesión, por ejemplo, una base de datos o el objeto HttpApplicationState. Dependiendo de sus necesidades, también podría usar Session_OnEnd para eliminar esta información.

Es posible que desee inicializar y limpiar parte de esta información mediante los eventos Application_Start y Application_End.

La página de administración puede leer esta información y mostrar estadísticas, etc.

Esto se explica con más profundidad en http://msdn.microsoft.com/en-us/library/ms178594.aspx y http://msdn.microsoft.com/en-us/library/ms178581.aspx .



En global.aspx

void Application_Start(object sender, EventArgs e) { // Code that runs on application startup Application["OnlineUsers"] = 0; } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started Application.Lock(); Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1; Application.UnLock(); } void Session_End(object sender, EventArgs e) { // 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. Application.Lock(); Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1; Application.UnLock(); }

Nota: Los métodos Application.Lock y Application.Unlock se utilizan para evitar que varios hilos cambien esta variable al mismo tiempo.

En Web.config

Verifique que el SessionState es "InProc" para que esto funcione

<system.web> <sessionState mode="InProc" cookieless="false" timeout="20" /> </system.web>

En su archivo .aspx

Visitors online: <%= Application["OnlineUsers"].ToString() %>

Nota: El código se copió originalmente de http://www.aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx



Si desea implementar el mismo mecanismo usted mismo, puede definir como una clase CurrentUserManager e implementar el patrón singleton aquí. Este objeto singleton de la clase CurrentUserManager sería único en el AppDomain. En esta clase creará su propia instancia una vez, y prohibirá a los demás crear nuevas instancias de esta clase al ocultar su constructor. Cada vez que una solicitud llega a este objeto, esa única instancia dará la respuesta. Por lo tanto, si implementa una lista que conserva los registros de cada usuario (cuando ingresa un usuario, lo agrega a la lista; cuando sale, lo elimina de la lista). Y, por último, si desea contar el usuario actual, puede solicitar el recuento de la lista para este objeto singleton.


Puede usar PerformanceCounter para obtener datos del espacio de nombres System.Diagnostics. Le permite obtener "Sesiones Activas" y mucho más. Le permite obtener desde el servidor local y remoto.

Aquí hay un ejemplo de cómo hacerlo en la máquina local

void Main() { var pc = new PerformanceCounter("ASP.NET Applications", "Sessions Active", "__Total__"); Console.WriteLine(pc.NextValue()); }

o para el servidor remoto que harías:

void Main() { var pc = new PerformanceCounter("ASP.NET Applications", "Sessions Active", "__Total__", "ServerHostName.domain"); Console.WriteLine(pc.NextValue()); }

Contadores de rendimiento para ASP.NET proporciona una lista completa de contadores ASP.NET que puede supervisar


Google Analytics incluye una API que se puede implementar en su aplicación ASP.NET MVC. Tiene funcionalidad RealTime para que la cantidad actual de usuarios en su sitio web pueda ser rastreada y devuelta a su aplicación.

Aquí hay algo de información