2010-08-14 6 views
2

Je suis confronté à un vieux problème qui m'a fait beaucoup me tromper. J'ai donc besoin de vos conseils pour m'assurer que j'ai bien utilisé. Ma demande est de compter le nombre de visiteurs sur mon site, donc je l'ai codé dans le fichier Global.asax:Quelle est la bonne façon de compter le nombre total de visiteurs sur un site web?

void Application_Start(object sender, EventArgs e) 
{ 
    // Get total visitor from database 
    long SiteHitCounter = 0; 
    int CurrentUsers = 0; 
    SiteHitCounter = MethodToGetTotalVisitorFromDatabase(); 
    Application["SiteHitCounter"] = SiteHitCounter; 
    Application["CurrentUsers"] = CurrentUsers; 
} 

void Application_End(object sender, EventArgs e) 
{ 
    // Update total visitor to database when application shutdown 
    MethodToUpdateTotalVisitorToDatabase((long)Application["SiteHitCounter"]); 
} 

void Session_Start(object sender, EventArgs e) 
{ 
    // Increase total visitor and online user 
    Application["SiteHitCounter"] = (long)Application["SiteHitCounter"] + 1; 
    Application["CurrentUsers"] = (int)Application["CurrentUsers"] + 1; 
} 

void Session_End(object sender, EventArgs e) 
{ 
    // Decrease online user 
    Application["CurrentUsers"] = (int)Application["CurrentUsers"] - 1; 
} 

Ensuite, je demande la variable [ « SiteHitCounter »] et l'application [CurrentUsers "] dans Un autre C# derrière le fichier de code pour les montrer sur la page Web Le problème que je suis confronté est que le site Web ne peut pas montrer juste le nombre total de visiteur comme dans ma base de données quand je le publie à l'hôte partagé.

Merci, Tien

+0

Utilisez juste http://www.google.com/analytics/ et laissez-les résoudre le problème :) –

Répondre

1

vérifier le lien ..

Setting an Application("Counter") in the global.asax

Vous devez verrouiller la variable avant la mise à jour car elle est partagée maintenant. Et si vous voulez que cela soit juste, appliquez une vérification à l'adresse IP afin que personne ne puisse faire plusieurs sessions.

+0

parfait Azhar, je vais essayer de mettre en œuvre la vérification ip plus tard. Je vais utiliser vos trucs pour le moment. Merci beaucoup! –

+0

bienvenue .... si la réponse répond à votre objectif, alors acceptez la réponse, ce qui aidera les autres à essayer la bonne méthode pour leur question simmiler. Merci – Azhar

2

vous ne pouvez pas garantir que l'événement de fin de session se déclenchera. Vous devriez également appeler application.lock pour vous assurer qu'il n'y a pas de problèmes de concurrence lors de la mise à jour du compteur. En outre, il est possible que la même personne créerait plusieurs sessions au cours d'une vie de votre application afin que vous pouvez ajouter l'adresse IP de vérification afin d'améliorer encore la précision

+0

oh, merci pour votre réponse. –

1

Un visiteur est une personne qui demande 1 page. Il n'y a aucun moyen de savoir s'ils sont sur votre site après la demande, comme s'ils sont en train de lire votre page.

La session commence à la première page demandée et expire 20 minutes après, même si l'utilisateur a demandé 1 seule page dans la première seconde de la session, puis à gauche.

Il n'y a donc aucun moyen de savoir combien de visiteurs vous avez à un moment donné.

Vous pouvez créer une liste avec des adresses IP de visite et enregistrer l'heure de la visite. Vous pouvez ensuite expirer ces entrées vous-même avec une minuterie, disons 20 minutes. Cela annulerait également les sessions en double provenant de la même adresse IP.

Questions connexes