2009-10-30 19 views
7

Estoy usando .NET 3.5. Además, se utiliza la Autenticación de formularios.ASP.NET | Autenticación de formularios | Obtenga TODOS los usuarios iniciados (lista de todos los usuarios o conteo)

¿Hay alguna manera de obtener la lista de TODOS los usuarios conectados o un recuento en ASP.NET?

Nota: No estoy usando miembros y roles

+2

También tenga en cuenta, no importa lo que haces, lo que cuenta es probable que sea apagado. –

+0

Tuve que hacer algo * como * esta vez para limitar la carga en un sitio web. Sin embargo, utilicé el inicio/final de la sesión. –

Respuesta

6

No existe no menos

  1. Ha definido uno en su propio código

  2. Está utilizando el valor por defecto Proveedor de Membresía ASPNET que tiene un método GetNumberOfUsersOnline() definido.

  3. Está utilizando un proveedor personalizado y ha proporcionado una implementación para el método GetNumberOfUsersOnline() mismo

el proveedor de pertenencia ASPNET predeterminada calcula el número de usuarios en línea mediante la consulta de la base de datos de SQL Server y el control de la LastActivityDate almacenado contra cada usuario contra la propiedad UserIsOnlineTimeWindow definida que puede establecer en web.config. Si el LastActivityDate es mayor que el tiempo actual menos el valor UserIsOnlineTimeWindow (que representa los minutos), se considera que un usuario está en línea.

Si quiere hacer algo similar, entonces podría considerar implementar un método similar. Puede ver el código para los proveedores predeterminados por downloading the source code. Para completar su imagen, es posible que también desee ejecutar aspnet_regsql.exe para que pueda ver los procedimientos almacenados que utilizan los proveedores predeterminados.

+0

¿Qué tan difícil es implementar el Proveedor de Membresía? – Chicago

+0

para implementar la suya es bastante sencillo. Consulte este artículo: http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx –

+0

. Es bueno saber sobre la propiedad UserIsOnlineTimeWindow. –

3

autenticación de formularios almacena todo es estado en una cookie que se pasa a los navegadores de los usuarios.

(esto permite la autenticación de formularios para trabajar en una granja de servidores web)

lo tanto no hay manera de obtener una lista de usuarios registrados, etc de autenticación de formularios estándar.

Sin embargo Autenticación de formularios tiene eventos que se dispara cuando se autentica un usuario, etc. Se puede actualizar su propia lista de usuarios en estos eventos - (tenga cuidado con bloqueo, si lo hace)

Sin embargo como usuario se "registrará" cuando los navegadores expiren la cookie, le resultará muy difícil eliminar correctamente a todos los usuarios que hayan iniciado sesión en la hora correcta de su lista.


Usted puede ser mejor de almacenado el momento en que vieron por última vez a los usuarios y luego tener una lista de usuarios que ha visto en los últimos decir 5 minutos. E.g mantener una lista de usuarios activos.

1

Utilicé Session_Start y Session_End en Global.aspx. funciona la mayoría de las veces, excepto que el usuario cierre su navegador.el lado del servidor necesita esperar a que expire la sesión para eliminar al usuario.

4

proveedor de pertenencia tienen sus beneficios, pero sólo para realizar un seguimiento de los usuarios en línea también puede:

  1. Añadir una columna LastActivityDate a su tabla de usuario y actualizarlo a partir del código durante el inicio de sesión y en todas las páginas cargas para ese usuario.

  2. Y para obtener el usersonline durante los últimos X minutos sólo tiene que utilizar el siguiente código SQL

    Select * from Users where LastActivityDate > 
    DATEADD(minute, -(X), GETDATE()) 
    
Cuestiones relacionadas