2010-05-25 6 views
0

J'ai stocké des CV dans ma base de données et je l'ai retrouvé à partir de la page web asp.net en créant linkbutton ... je peux voir, télécharger les CV que j'ai stockés dans ma base de données.Mon issuse est quand je regarde un exemple de résumé (résumé de domnic) alors aucun de visiteur pour le résumé de domnic devrait être compte .if encore je regarde ce résumé aucun de visiteur devrait être 2 ... comment puis-je faire cela dans asp.net?Comptez le nombre de visiteurs

Répondre

0

Vous pouvez garder une trace des vues affichées en conservant le nombre dans la base de données ou un stockage persistant de votre choix. Chaque fois qu'une vue de reprise particulière est demandée, mettez à jour le nombre de vues pour ce résumé. Vous pouvez divulguer certains éléments du design que vous avez fait pour obtenir des réponses plus spécifiques.

0

Si vous souhaitez simplement voir ce compte en tant que développeur/administrateur et que vous souhaitez collecter des statistiques sur l'ensemble du site, vous pouvez également envisager d'utiliser Google Analytics.

1

Il y a une tonne de façons de le faire, chacun a ses bizarreries. Voici une manière rapide et sale de le faire, la seule chose à retenir est que Session_OnEnd peut être un peu floconneux.

public void Application_OnStart(Object sender, EventArgs e) 
    { 
    Hashtable ht = (Hashtable)Application["SESSION_LIST"]; 
    if(ht == null) 
    { 
     ht = new Hashtable(); 
     lock(Application) 
     { 
     Application["SESSION_LIST"] = ht; 
     Application["TOTAL_SESSIONS"] = 0; 
     } 
    } 
    } 

    public void Session_OnStart(Object sender, EventArgs e) 
    { 

    Hashtable ht = (Hashtable)Application["SESSION_LIST"]; 
    if(ht.ContainsKey(Session.SessionID) == false) 
    { 
     ht.Add(Session.SessionID, Session); 
    } 

    lock(Application) 
    { 
     int i = (int)Application["TOTAL_SESSIONS"]; 
     i++; 
     Application["TOTAL_SESSIONS"] = i; 
    } 
    } 

    public void Session_OnEnd(Object sender, EventArgs e) 
    { 
    Session.Clear(); 
    Hashtable ht = (Hashtable)Application["SESSION_LIST"]; 
    ht.Remove(Session.SessionID); 

    lock(Application) 
    { 
     int i = (int)Application["TOTAL_SESSIONS"]; 
     i--; 
     Application["TOTAL_SESSIONS"] = i; 
    } 

    } 

Voici une autre façon ...

Membership.GetNumberOfUsersOnline();

+0

Cela ne fonctionne pas lorsque le site a beaucoup de pages de réponse ajax. Cela augmentera la variable TOTAL_SESSIONS pour chaque requête/réponse ajax. –

+0

Je n'ai pas ce problème avec les services WCF utilisant AspNetCompatibilityRequirementsMode.Allowed. La raison pour laquelle vous obtenez ceci est probablement causée par la façon dont vous traitez les connexions à vos services Web comme étant sans état (chaque demande = nouvelle connexion). – Zachary

+0

implémente 'Membership.GetNumberOfUsersOnline();'? –

Questions connexes