Question

Je suis un débutant et le développement d'un site Web en utilisant ASP .Net 2.0 avec C # 2005. Je voudrais ajouter une installation pour compter les pas. des visiteurs de mon site. J'ai rassemblé les informations de base pour ajouter cette fonctionnalité à l'aide Global.asax. J'ai apporté des modifications à Web.config en ajoutant la ligne « » prévue à l'article system.web.

Je me sers d'une table pour garder le nombre de visiteurs. Mais je ne sais pas comment accomplir la tâche. Mon défaut fichier Global.asax est venu avec différentes sections Application_Start, Application_End, Application_Error, Session_Start et Session_End. J'ai essayé d'extraire la valeur courante du compteur dans la section Application_Start et stocker dans une variable globale. J'incrémenter le compteur à Session_Start et écrire la valeur modifiée à la table Application_End.

Je l'ai essayé d'utiliser des sous-routines / fonctions publiques. Mais où dois-je placer ces sous-routines? J'ai essayé d'ajouter les sous-routines dans le Global.asax lui-même. Mais maintenant, je reçois des erreurs, que je ne peux pas ajouter une référence à Data.SqlClient dans Global.asax et je besoin de références à SqlConnection, SqlCommand, etc. SqlDataReader pour mettre en œuvre les fonctionnalités. Dois-je ajouter des fichiers de classe pour chaque sous-routines? S'il vous plaît me guider.

Je voudrais également mettre en œuvre fonction de suivi à mon site Web et stocker l'adresse IP, navigateur utilisé, la date et l'heure de la visite, la résolution d'écran, etc de mes sites web visiteurs. Comment puis-je faire?

En attente de suggestions.

Lalit Kumar Barik

Était-ce utile?

La solution

script analytique Google est exactement ce dont vous avez besoin. Parce que la session, la volonté ouvre crawlers aussi.

Autres conseils

Pour une implémentation naïve, vous pouvez utiliser une coutume HttpModule. Pour chaque demande à votre demande, vous feriez:

  1. Vérifiez si Request.Cookies comprend un cookie de suivi
  2. Si le cookie de suivi n'existe pas, ce qui est probablement un nouveau visiteur (ou bien, leur cookie expiré -. Voir 4)
  3. Pour un nouveau visiteur, connectez-vous les statistiques de visiteurs, puis mettez à jour le compte visiteur
  4. Ajoutez le cookie de suivi de la réponse étant renvoyée au visiteur. Vous souhaitez définir ce cookie pour une période d'expiration assez longue, de sorte que vous ne recevez pas beaucoup de « faux positifs » avec les utilisateurs retour dont les cookies ont expiré.

Voici un code squelette ci-dessous (sauf comme StatsCounter.cs ):

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Transactions;

namespace hitcounter
{
    public class StatsCounter : IHttpModule
    {
        // This is what we'll call our tracking cookie.
        // Alternatively, you could read this from your Web.config file:
        public const string TrackingCookieName = "__SITE__STATS";

        #region IHttpModule Members

        public void Dispose()
        { ;}

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.PreSendRequestHeaders += new EventHandler(context_PreSendRequestHeaders);
        }

        void context_PreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            HttpResponse response = app.Response;
            if (response.Cookies[TrackingCookieName] == null)
            {
                HttpCookie trackingCookie = new HttpCookie(TrackingCookieName);
                trackingCookie.Expires = DateTime.Now.AddYears(1);  // make this cookie last a while
                trackingCookie.HttpOnly = true;
                trackingCookie.Path = "/";
                trackingCookie.Values["VisitorCount"] = GetVisitorCount().ToString();
                trackingCookie.Values["LastVisit"] = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");

                response.Cookies.Add(trackingCookie);
            }
        }

        private long GetVisitorCount()
        {
            // Lookup visitor count and cache it, for improved performance.
            // Return Count (we're returning 0 here since this is just a stub):
            return 0;
        }

        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            HttpRequest request = app.Request;

            // Check for tracking cookie:
            if (request.Cookies[TrackingCookieName] != null)
            {
                // Returning visitor...
            }
            else
            {
                // New visitor - record stats:
                string userAgent = request.ServerVariables["HTTP_USER_AGENT"];
                string ipAddress = request.ServerVariables["HTTP_REMOTE_IP"];
                string time = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");
                // ...
                // Log visitor stats to database

                TransactionOptions opts = new TransactionOptions();
                opts.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, opts))
                {
                    // Update visitor count.
                    // Invalidate cached visitor count.
                }
            }
        }

        #endregion
    }
}

Enregistrez-vous ce module en ajoutant les lignes à votre fichier web.config suivants:

<?xml version="1.0"?>
<configuration>
    ...
    <system.web>
        ...
        <httpModules>
          <add name="StatsCounter" type="<ApplicationAssembly>.StatsCounter" />
        </httpModules>
    </system.web>
</configuration>

(Remplacer par le nom de votre projet d'application Web, ou le supprimer si vous utilisez un projet de site Web.

Il faut espérer que ce sera suffisant pour vous aider a commencé à expérimenter. Comme d'autres l'ont souligné que, pour un site réel, vous êtes beaucoup mieux en utilisant une solution d'analyse Google (ou d'autres) pour cela.

Utilisez Google Analytics . Ne pas essayer de réinventer la roue à moins que a) la roue ne fait pas ce que vous voulez ou b) vous êtes juste essayer de savoir comment fonctionne la roue

Je ne peux deuxième suggestion de Gareth à utiliser une analyse du trafic déjà disponible. Si vous ne l'aimez pas l'idée de donner des données Google sur le trafic de votre site, vous pouvez télécharger les fichiers journaux et les analyser avec l'un des nombreux noreferrer serveur web outils d'analyse des fichiers journaux disponibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top