Visitor Counter - ASP.NET WebForms

Eine Frage taucht in jedem meiner ASP.NET-Kurse immer wieder auf:
“Wie erzeuge ich einen einfachen Visitor-Counter für meine Website?”

Nun muss man sich als ASP-Entwickler natürlich darüber im Klaren sein, wie man dies realisieren kann. In der Regel wird den meisten Entwicklern mit schon etwas Erfahrung natürlich sofort das Application Dictionary einfallen und noch das ein oder andere Event, um an das gewünschte Ziel zu gelangen. Lassen Sie uns einen genaueren Blick darauf werfen!

Im Folgenden werde ich Ihnen zeigen, wie Sie mithilfe des Application Dictionary und einiger Events die Benutzer zählen können, welche auf Ihrer Website landen. Zunächst der einfache Part: Hinzufügen eines Label Controls zu einer bestehenden Website (zum Anzeigen der Werte). Hierbei werde ich die Standardvorlage des Visual Studio 2012 WebApplication Project verwenden und benenne das WebForm ‘Sessions.aspx’.

 

 

 

  1: Aufrufe seit publish (11.11.2013):
  2: <asp:Label ID="lblAufrufe" runat="server" />

 

Um das Label mit Werten zu versorgen, müssen wir dies natürlich auch noch über die CodeBehind erledigen. Dazu fügen wir folgenden Code dem Page_Load Event hinzu:

  1: int count = 0;
  2: 
  3: if (Application["Visitors"] != null)
  4: {
  5:   count = (int)Application["Visitors"];
  6: }
  7: 
  8: lblAufrufe.Text = count.ToString();

Als erstes erstellen wir eine temporäre Variable ‘count’, welche wir standardgemäß auf den Wert 0 setze. Falls in der ‘Visitors’-Variable kein Wert enthalten sein sollte, wird die 0 angezeigt. Nun fragen wir den Wert der ‘Visitors’-Variable von unserem Application Dictionary ab, und befüllen anhand dieser unsere temporäre Variable.Im Application Dcitionary werden Werte immer als Object abgespeichert, d. h. wir müssen zunächst TypCasten (=Konvertieren) nach Integer.
Nachdem wir das erledigt haben, müssen wir noch den entscheidenden Part erledigen: Anlegen der ‘Visitors’-Variable im Dictionary und das Inkrementieren dieser. Zunächst widmen wir uns dem Anlegen der Variable. Dies geschieht im Application_Start Event der Global.asax. Hier haben wir mehrere Events zur Verfügung, um den Life Cycle unserer Application UND der Sessions mit zu verfolgen.

  1: Application["Visitors"] = 0;

Nun, da wir unsere Variable in den Application Pool geworfen haben, müssen wir noch dafür sorgen, dass diese auch erhöht wird, immer wenn ein Besucher bei uns landet.
Dazu benötigen wir die Session_Start Event-Funktion. Das Session Start Event wird jedes Mal ausgeführt, wenn ein User eine Session erhält ODER er eine neue SessionID aufgrund eines Timeouts zugewiesen bekommt.

  1: void Session_Start(object sender, EventArgs e)
  2:         {
  3:             Application["Visitors"] = (int)Application["Visitors"] + 1;
  4:         }

Dort aktualisieren wir einfach den alten Wert von unserer Application-Variablen um eins und speichern diesen wieder ab.

UND FERTIG! Zum Thema habe ich direkt noch eine Website auf Windows-Azure gehostet, um eine Live-Demo anbieten zu können. Sämtliche darin vorkommenden Informationen habe ich durch das Request Objekt abgefragt und ausgegeben. (Azure-IIS beendet die Anwendung falls innerhalb von 15min kein Request stattfindet…)

Visit Counter Demo

 

Kommentare sind geschlossen