Wie kann ich die Anzahl der Benutzer auf einer ASP.NET-Website (IIS) bestimmen? Und ihre Informationen?

StackOverflow https://stackoverflow.com/questions/155593

Frage

Gibt es eine Möglichkeit, die Anzahl der Benutzer zu bestimmen, die aktiven Sitzungen in einer ASP.NET-Anwendung? Ich habe ein Admin / Tools Seite in einer bestimmten Anwendung, und ich möchte Informationen über alle offenen Sitzungen angezeigt werden, wie zum Beispiel die Anzahl der Sitzungen, und vielleicht der Maschinen-Adressen oder andere Anmeldeinformationen für jeden Benutzer angefordert wird.

War es hilfreich?

Lösung

ASP.NET-Leistungsindikatoren wie Staat Server Sessions Aktiv (Die Anzahl der aktiven Benutzersitzungen) sollten Ihnen helfen. Dann können Sie einfach lesen und die Leistungsindikatoren von Ihrer Admin-Seite anzuzeigen. .

Andere Tipps

In 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();
}

Hinweis: Die Application.Lock und Application.Unlock Methoden verwendet werden, ändert diese Variable gleichzeitig mehrere Threads zu verhindern.

In Web.config

Stellen Sie sicher, dass die Session ist „InProc“ für diese

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

In Ihrer ASPX-Datei

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

Hinweis: -Code wurde ursprünglich von http://www.aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for- ASP-NET-website.aspx (Link nicht mehr aktiv)

Wenn Sie .net Mitgliedschaft verwenden könnten Sie

Membership.GetNumberOfUsersOnline()

Weitere Informationen: http: / /msdn.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline.aspx

Wenn Sie selbst den gleichen Mechanismus implementieren möchten, können Sie sich wie ein CurrentUserManager Klasse definieren und die Singletonmuster hier implementieren. Das Singleton-Objekt der Klasse CurrentUserManager würde in der AppDomain eindeutig sein. In dieser Klasse werden Sie seine Selbst Instanz einmal erstellen, und Sie werden die anderen von der Schaffung neuer Instanzen dieser Klasse durch Ausblenden Konstruktor verbieten. Jedes Mal, wenn eine Anfrage zu diesem Objekt kommt, wird die einzige Instanz, die Antwort geben. Also, wenn Sie eine Liste implementieren, die die Datensätze aller Benutzer hält (wenn ein Benutzer kommt, Sie ihn in die Liste aufnehmen, wenn er geht, Sie ihn aus der Liste entfernen). Und schließlich, wenn Sie die aktuellen Benutzer zählen möchten könnten Sie fragen Sie einfach die Liste Zahl auf dieses Singleton-Objekt.

So wie ich dies in der Vergangenheit getan gesehen haben, ist zusätzlicher Code zum Session_OnStart Ereignis in der Datei Global.asax Hinzufügen der Informationen in einer Sitzung Agnostiker Weise zu speichern, z.B. eine Datenbank oder das Objekt Httpapplicationstate. Je nach Ihren Anforderungen können Sie auch Session_OnEnd verwenden diese Informationen zu entfernen.

Sie möchten initialisieren und einige dieser Informationen mit den Application_Start und Application_End Ereignisse aufzuräumen.

Die Verwaltungsseite kann dann lesen Sie diese Informationen und Anzeige Statistiken etc.

Dies wird in mehr Tiefe erklärt unter http://msdn.microsoft. com / en-us / library / ms178594.aspx und http: //msdn.microsoft.com/en-us/library/ms178581.aspx .

Wenn Sie SQL Server als Sitzungsstatus-Provider verwenden, können Sie diesen Code verwenden, um die Zahl der Online-Nutzer zu zählen:

SELECT Count(*) As Onlines FROM ASPStateTempSessions WHERE Expires>getutcdate()

Sie können die Performance verwenden, um Daten von System.Diagnostics Namespace zu erhalten. Es ermöglicht Ihnen, „Sessions Aktiv“ und vieles mehr zu erhalten. Es ermöglicht Ihnen, von den lokalen Server als auch remote zu erhalten.

Hier ist ein Beispiel dafür, wie es auf dem lokalen Rechner zu tun

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

    Console.WriteLine(pc.NextValue());
}

oder für Remote-Server würden Sie tun:

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

    Console.WriteLine(pc.NextValue());
}

Leistungsindikatoren für ASP.NET bietet vollständige Liste der ASP. NET-Zähler, die Sie überwachen

Google Analytics verfügt über eine API, die auf ASP.NET MVC-Anwendung implementiert werden kann. Es verfügt über Realtime-Funktionalität, so dass die aktuelle Anzahl an Benutzern auf Ihrer Website verfolgt und an Ihre Anwendung zurückgegeben werden kann.

Hier einige Informationen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top