2010-04-27 9 views
5

Necesito mostrar cuántos usuarios navegan en mi sitio. El sitio se ejecuta en iis7, y estamos usando asp.net 3.5.¿Cómo puedo encontrar el número de visitantes/usuarios en mi sitio (IIS7/asp.net) en un momento dado?

¿Es el número de sesiones activas un buen camino por recorrer? El número no necesita ser muy preciso.

No se necesita historial, solo quiero saber cuántos usuarios están "en línea" en este momento, y mostrar eso en la página.

+0

Una gran cantidad de sitios web ASP.NET tienen 'LastActivityDate' (o similar) como una columna en la tabla de usuario. Puede usar eso para contar todos los usuarios que han estado activos en los últimos 10 minutos más o menos. –

Respuesta

4

Puede utilizar los contadores de rendimiento de Windows para esto (perfmon)

aplicaciones ASP.NET> Sesiones de contador activo.

Puede acceder a estos contadores de rendimiento utilizando el espacio de nombres System.Diagnostics.

Este código trabajado para mí:

 PerformanceCounter pc = new PerformanceCounter("ASP.NET Applications", 
    "Sessions Active", "__Total__", "MYSERVERHOSTNAME.domain"); 

     while (true) 
     { 
      Console.WriteLine(pc.NextValue()); 
      System.Threading.Thread.Sleep(1000); 
     } 

tuve este problema para echar un vistazo aquí si el contador parece demasiado alto: http://support.microsoft.com/kb/969722

+0

¿Se puede acceder a esto programáticamente desde .Net? – oekstrem

+0

Creo que sí: eche un vistazo al espacio de nombres System.Diagnostics para los contadores de rendimiento. Eche un vistazo a este proyecto: http://www.codeproject.com/KB/dotnet/perfcounter.aspx –

+0

De hecho, esta podría ser una mejor: http://www.geekpedia.com/tutorial211_Using-Performance- Counters-in-Csharp.html –

1

Como principio general, usted tiene que definir a qué se refiere por el número de usuarios en línea.

Por ejemplo, las sesiones suelen durar una duración predefinida, como 30 minutos. Dependiendo de cuánto tiempo espere que los usuarios estén en su sitio, la duración de una sesión podría atribuirse en gran parte al tiempo de inactividad cuando el usuario no está en su sitio.

En general, quiere personas que han estado en línea en los últimos n minutos. Las sesiones le proporcionan esta estadística durante un período de tiempo (la expiración de la sesión configurada), pero hay muchas otras medidas de tiempo que podrían ser más relevantes.

1

Una forma de lograr esto es simplemente hacer que los registros de IIS introduzcan sus datos en una tabla en su base de datos en lugar del sistema de archivos local. Esto es bastante fácil de configurar en el nivel del servidor web.

Entonces aquí se puede graficar eso y mostrar el uso durante todo el día, actual, semanal, etc.

Por supuesto, si usted tiene un sitio de mucho tráfico, entonces esto daría lugar a una enorme cantidad de datos recogidos.

Cuestiones relacionadas