14 Fév2016
Compteurs de visiteurs
Objectifs:
- Gérer l'état d'une application ASP.net
- Utiliser les variables d'état côté serveur
- Utiliser les variables d'application
- Exploiter les différents événements qui sont gérés par le fichier Global.asax
Énoncé:
L'objectif de cet exercice est de créer une page ASP.NET qui affiche trois types de compteurs:
Compteur de visites : Le nombre de chargement de la page
Compteur de visiteurs : qui compte le nombre d'utilisateurs qui ont accédé à la page
Compteur de visiteurs uniques : qui compte le nombre de visiteurs actifs. Une visite est terminée lorsque le visiteur quitte la page (sa session est terminée).
Créer la page suivante qui affiche les 3 compteurs dans des contrôles Label :
Code ASP.NET de la page
<form id="form1" runat="server"> <h3>Page des compteurs en ASP.net</h3> <p><strong>Nombre total d'affichage: <asp:Label ID="lblCmpVisites" runat="server" Text="" style="color: #000099;"></asp:Label> </strong></p> <p><strong>Nombre total de visiteurs: <asp:Label ID="lblCmpVisiteurs" runat="server" Text="" style="color: #000099;"></asp:Label> </strong></p> <p><strong>Utilisateurs actifs: <asp:Label ID="lblCmpVisiteursActifs" runat="server" Text="" style="color: #000099;"></asp:Label> </strong></p> </form>
Code-Behind C#
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //Incrémentation du compteur de visites à chaque chargement de la page Application.Lock(); Application["nbVisites"] = (int)Application["nbVisites"] + 1; Application.UnLock(); lblCmpVisites.Text = Application["nbVisites"].ToString(); lblCmpVisiteurs.Text = Application["nbVisiteurs"].ToString(); lblCmpVisiteursActifs.Text = Application["nbVisiteursActifs"].ToString(); } }
Fichier Global.asax
public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { //Initialisation des 3 compteurs au démarrage de l'application Application["nbVisites"] = 0; Application["nbVisiteurs"] = 0; Application["nbVisiteursActifs"] = 0; } protected void Session_Start(object sender, EventArgs e) { //Incrémentation des compteurs de visiteurs lorsqu'une session est ouverte Application.Lock(); Application["nbVisiteurs"] = (int)Application["nbVisiteurs"] + 1; Application["nbVisiteursActifs"] = (int)Application["nbVisiteursActifs"] + 1; Application.UnLock(); } protected void Session_End(object sender, EventArgs e) { //Décrémentation du compteurs de visiteurs actifs lorsqu'une session est terminée Application.Lock(); Application["nbVisiteursActifs"] = (int)Application["nbVisiteursActifs"] - 1; Application.UnLock(); } }
Note
L'événement Session_End se déclenche si l'utilisateur reste inactif tout au long de la durée de vie de la session et que le mode de stockage des données de session est InProc (l'état de session est stocké en mémoire sur le serveur Web).