2015-10-13 16 views
9

Ho visto così tanti articoli e collegamenti relativi allo stesso concetto.Utenti online su applicazione ASP.NET

Counting online users using asp.net

Is there any ASP.NET application to monitor online user and page view log report?

mio è po 'diverso. La mia applicazione è MVC4 e utilizzo di SimpleMembershipProvider. Non sono sicuro del perché GetNumberOfUsersOnline non funzioni.

https://msdn.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline(v=vs.110).aspx

tutte le idee? Come farlo in un modo facile ed efficace. Sto solo usando questo in un solo posto nel mio sito web.

+2

[Questo] (http://forums.asp.net/t/1847047.aspx?SimpleMembershipProvider+GetNumberOfUsersOnline+Method+MembershipUser+LastLoginDate+Property) suggerisce SimpleMembership non implementa tale funzione. – Jasen

+0

Vuoi conoscere il numero di utenti loggati? o il numero totale di utenti online? –

+0

@SimchaKhabinsky Numero totale di utenti online – Chatra

risposta

2

Un'altra soluzione bello che è piacevolmente ortogonale al tuo codice è Google Analytics. http://www.google.com/analytics/ Utilizzando GA, puoi vedere una visualizzazione in tempo reale degli utenti attivi sul tuo sito web. Aiuta anche ad avere una storia nel tempo e può vedere i picchi e le valli dell'attività dell'utente.

3

Ho trovato this online sembra che funzioni per voi. Basta aggiungere questo codice al file Global.asax.cs:

protected void Application_Start(Object sender, EventArgs e) 
{ 

    Application.Lock(); 
    Application["UserCount"] = 0; 

} 
protected void Session_Start(Object sender, EventArgs e) 
{ 

    Application.Lock(); 
    Application["UserCount"] = (int)Application["UserCount"] + 1; 
    Application.UnLock(); 
} 

protected void Session_End(Object sender, EventArgs e) 
{ 
    Application.Lock(); 
    Application["UserCount"] = (int)Application["UserCount"] - 1; 
    Application.UnLock(); 

} 

Poi, quando è necessario accedere contare l'utente è possibile utilizzare:

var count = (int)Application["UserCount"]; 
+0

La fine della sessione non viene attivata. Ho provato quello – Chatra

+0

Questo suggerisce che se si aggiunge qualcosa alla sessione, si accenderà. Hai provato ad aggiungere qualcosa alla sessione all'inizio della sessione? http://stackoverflow.com/questions/4813462/session-end-does-not-fire – Aaron

+0

Ho provato a farlo ma non ha funzionato – Chatra

2

Da documentazione Microsoft:

GetNumberOfUsersOnline restituisce il numero di utenti per l'ApplicationName corrente in cui la data dell'ultima attività è maggiore della ora corrente meno U serIsOnlineTimeWindow. L'ultima attività di data/ora viene aggiornato per la data e l'ora corrente quando le credenziali dell'utente sono convalidate attraverso il metodo di ValidateUser o UpdateUser o quando una chiamata a un GetUser overload che accetta nessun parametro o uno che utilizza il parametro userIsOnline per specificare che il timbro data/ora deve essere aggiornato.

Si può vedere che GetNumberOfUsersOnline dipende da più parametri e non è efficace. Come soluzione temporanea, suggerisco di poter ereditare SqlMembershipProvider e sovrascrivere GetNumberOfUsersOnline(), in modo da poter implementare la logica qui.

public class MyMembershipProvider : SqlMembershipProvider 
{ 
    public override bool ValidateUser(string username, string password) 
    { 
    if (base.ValidateUser(username, password)) 
    { 
     // successfully logged in. add logic to increment online user count. 

     return true; 
    } 

    return false; 
} 

public override int GetNumberOfUsersOnline() 
{ 
    // add logic to get online user count and return it. 
} 
} 

Proprio decrementare logica numero di utenti in linea nel utente logout

Se si desidera che i visitatori della pista e le pagine visitate, qui qualche idea:

+0

Questo, sfortunatamente, non è disponibile nel modello di identità ASP.Net più recente. :( – MC9000

2

Si può provare a leggere i contatori delle prestazioni elencati here:

anonimi attuale utenti è il numero di utenti anonimi di IIS

correnti non utenti anonimi è il numero di utenti di IIS autorizzati

1

È possibile utilizzare signalR per tenere traccia degli utenti connessi. Usando questo è possibile ottenere il conteggio online in modo efficiente & Real Time e anche tracciare le informazioni degli utenti connessi. È possibile impostare la condizione per tenere traccia degli utenti registrati. Quindi, vai con l'ultima tecnologia. È possibile implementare con l'applicazione MVC esistente.

È possibile consultare questo tutorial ufficiale per lo stesso.

http://www.asp.net/signalr

Problemi correlati