Domanda

Sono un principiante e sto sviluppando un sito Web utilizzando ASP .Net 2.0 con C# 2005.Vorrei aggiungere una struttura per contare il n.di visitatori del mio sito web.Ho raccolto le informazioni di base per aggiungere questa funzionalità utilizzando Global.asax.Ho apportato modifiche a Web.config aggiungendo la riga "" nella sezione system.web.

Sto usando una tabella per tenere il conteggio dei visitatori.Ma non so come completare l'attività.Il mio file Global.asax predefinito veniva fornito con diverse sezioni Application_Start, Application_End, Application_Error, Session_Start e Session_End.Ho provato a estrarre il valore corrente del contatore nella sezione Application_Start e memorizzarlo in una variabile globale.Vorrei incrementare il contatore in Session_Start e scrivere il valore modificato nella tabella in Application_End.

Ho provato a utilizzare subroutine/funzioni pubbliche.Ma dove dovrei posizionare quelle subroutine?Ho provato ad aggiungere le subroutine nello stesso Global.asax.Ma ora ricevo errori, poiché non posso aggiungere riferimenti a Data.SqlClient in Global.asax e ho bisogno di riferimenti a SqlConnection, SqlCommand, SqlDataReader ecc.per implementare le funzionalità.Devo aggiungere file di classe per ciascuna subroutine?Per favore guidami.

Vorrei anche implementare la funzionalità di tracciamento sul mio sito web e memorizzare l'indirizzo IP, il browser utilizzato, la data e l'ora della visita, la risoluzione dello schermo, ecc. dei visitatori del mio sito web.Come posso farlo?

Aspetto suggerimenti.

Lalit Kumar Barik

È stato utile?

Soluzione

sceneggiatura analitica Google è esattamente quello che ti serve. A causa della sessione, la volontà si apre per i crawler troppo.

Altri suggerimenti

Per un'implementazione ingenua, è possibile utilizzare un costume HttpModule. Per ogni richiesta per la vostra applicazione, faresti:

  1. Verificare se Request.Cookies include un Tracking Cookie
  2. Se il cookie di tracciamento non esiste, questo è probabilmente un nuovo visitatore (o altro, il loro cookie è scaduto -. Vedi 4)
  3. Per un nuovo visitatore, registrare le statistiche visitatori, quindi aggiornare il visitatore count
  4. Aggiungi il cookie di tracking per la risposta di essere rispedito al visitatore. Ti consigliamo di impostare questo cookie di avere un periodo di scadenza piuttosto lungo, in modo da non ottiene un sacco di "falsi positivi" con il ritorno gli utenti i cui i cookie sono scaduti.

Ecco un po 'di codice scheletro di sotto (salvo come 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
    }
}

Registra questo modulo aggiungendo le seguenti righe al file web.config:

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

(Sostituire con il nome del progetto di applicazione web, o rimuoverlo se si sta utilizzando un progetto di sito web.

Speriamo che questo sarà sufficiente per iniziare a sperimentare. Come altri hanno fatto notare, però, per un sito vero e proprio, si sta molto meglio utilizzare Google (o qualche altro) di analisi soluzione per questo.

Utilizzo statistiche di Google.Non provare a reinventare la ruota a meno che a) la ruota non faccia quello che vuoi oppure b) tu stia solo cercando di scoprire come funziona la ruota

Posso solo secondo suggerimento di Gareth utilizzare un analisi del traffico già disponibili. Se non ti piace l'idea di dare i dati di Google sul traffico del tuo sito web, è anche possibile scaricare i file di log e analizzarli con uno dei tanti strumenti disponibili nofollow noreferrer file di log del server web di analisi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top