2015-10-13 23 views
9

Widziałem wiele artykułów i linków związanych z tą samą koncepcją.Użytkownicy online w aplikacji ASP.NET

Counting online users using asp.net

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

Kopalnia jest trochę inna. Moja aplikacja to MVC4 i używanie SimpleMembershipProvider. Nie jestem pewien, dlaczego GetNumberOfUsersOnline nie działa.

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

jakieś pomysły? Jak to zrobić w łatwy i skuteczny sposób. Używam tego tylko w jednym miejscu na mojej stronie internetowej.

+2

[W] (http://forums.asp.net/t/1847047.aspx?SimpleMembershipProvider+GetNumberOfUsersOnline+Method+MembershipUser+LastLoginDate+Property) sugeruje SimpleMembership nie realizacji tej funkcji. – Jasen

+0

Chcesz poznać liczbę zalogowanych użytkowników? lub całkowita liczba użytkowników online? –

+0

@SimchaKhabinsky Suma użytkowników online – Chatra

Odpowiedz

2

Kolejną miłą rozwiązanie, które jest przyjemnie prostopadły do ​​kodu to Google Analytics. http://www.google.com/analytics/ Korzystając z GA, możesz wyświetlać aktywnych użytkowników w czasie rzeczywistym na swojej stronie internetowej. Pomaga to również w historii z upływem czasu i umożliwia obserwowanie szczytów i dolin aktywności użytkowników.

3

Znalazłem this online, wygląda na to, że będzie działać. Wystarczy dodać ten kod do pliku 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(); 

} 

Wtedy, gdy trzeba przejść liczyć użytkownik może użyć:

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

Koniec sesji nie uruchamia się. Spróbowałem, że – Chatra

+0

Sugeruje to, że jeśli dodasz coś do sesji, to wystrzelą. Czy próbowałeś dodać coś do sesji podczas uruchamiania sesji? http://stackoverflow.com/questions/4813462/session-end-does-not-fire – Aaron

+0

Próbowałem, ale nie działało – Chatra

2

Z dokumentacji Microsoft:

GetNumberOfUsersOnline zwraca liczbę użytkowników dla bieżącego ApplicationName, gdzie data ostatniej aktywności jest większa niż bieżący czas pomniejszony o U serIsOnlineTimeWindow. W ostatniej aktywności data/czas pieczęć jest aktualizowana do aktualnej daty i czasu, gdy poświadczenia użytkownika są zatwierdzane w drodze ValidateUser lub UpdateUser metody lub gdy wezwanie do getUser przeciążenia, które ma żadnych parametrów lub taki, który używa parametru userIsOnline do określenia, że ​​data/sygnatura czasowa powinna zostać zaktualizowana.

Widać, że GetNumberOfUsersOnline zależy od wielu parametrów i nie jest efektywne. Jako obejście sugeruję, że można dodać SqlMembershipProvider i zastąpić GetNumberOfUsersOnline(), więc możesz zaimplementować tutaj swoją logikę.

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. 
} 
} 

Wystarczy zmniejszyć logika Internecie liczyć użytkownik w użytkownikowi wylogować

Jeśli chcesz odwiedzający kolein i odwiedzanych stron, tutaj jakieś pojęcie:

+0

Niestety nie jest on dostępny w nowszym modelu ASP.Net Identity. :( – MC9000

2

Możesz spróbować odczytać liczniki wydajności wymienione here:

Aktualny anonimowych jest liczba użytkowników anonimowych IIS

Aktualne nieanonimowego Użytkownicy jest liczba uprawnionych użytkowników IIS

1

Możesz użyć signalR do śledzenia podłączonych użytkowników. Za pomocą tego można skutecznie liczyć online & w czasie rzeczywistym, a także śledzić informacje o połączonych użytkownikach. Możesz umieścić warunek śledzenia również zalogowanych użytkowników. Idź z najnowszą technologią. Możesz zaimplementować za pomocą istniejącej aplikacji MVC.

Możesz odnieść się do tego oficjalnego samouczka dla tego samego.

http://www.asp.net/signalr