Pergunta

Eu sou um novato e desenvolver um site usando ASP .Net 2.0 com C # 2005. Eu gostaria de adicionar uma facilidade para contar o não. de visitantes ao meu site. Tenho recolhido as informações básicas para adicionar esse recurso usando Global.asax. Eu fiz modificações para Web.config, adicionando a linha "" sob a seção system.web.

Eu estou usando uma tabela para manter a contagem de visitantes. Mas eu não sei como para completar a tarefa. Meu arquivo global padrão veio com diferentes seções Application_Start, Application_End, Application_Error, Session_Start e Session_End. Eu tentei extrair o valor atual do contador na seção Application_Start e armazenar em uma variável global. Eu iria incrementar o contador em Session_Start e escrever o valor modificado para a mesa em Application_End.

Eu tentei usar sub-rotinas / funções públicas. Mas onde eu deveria colocar essas sub-rotinas? Eu tentei adicionar as sub-rotinas no próprio Global.asax. Mas agora eu estou recebendo erros, como eu não posso adicionar referência a Data.SQLClient no Global.asax e eu preciso de referências a SqlConnection, SqlCommand, SqlDataReader etc, para implementar os recursos. Eu tenho que adicionar arquivos de classe para cada sub-rotinas? Por favor me orientar.

Eu também gostaria de implementar o recurso de monitoramento ao meu site e armazenar o endereço IP, o navegador utilizado, data e hora da visita, resolução de tela etc dos meus sites visitantes. Como posso fazê-lo?

À espera de sugestões.

Lalit Kumar Barik

Foi útil?

Solução

O Google roteiro analítico é exatamente o que você precisa. Porque sessão, vontade abre para crawlers também.

Outras dicas

Para uma implementação simples, você pode usar um personalizado HttpModule. Para cada solicitação para a sua aplicação, você:

  1. Verifique se Request.Cookies inclui um cookie de rastreamento
  2. Se o cookie de rastreamento não existe, este é provavelmente um novo visitante (ou então, seu cookie expirou -. Ver 4)
  3. Para um novo visitante, o log de estatísticas de visitantes, em seguida, atualizar o visitante count
  4. Adicione o cookie de rastreamento para a resposta a ser enviada de volta para o visitante. Você vai querer definir este cookie para ter um período de validade bastante longo, para que você não obter lotes de "falsos positivos" com o retorno usuários cujos cookies de ter expirado.

Aqui está um código de esqueleto abaixo (salvar como 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
    }
}

Registe-se este módulo, adicionando as seguintes linhas ao seu arquivo Web.config:

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

(Substituir com o nome do seu projeto de aplicativo web, ou removê-lo se você estiver usando um projeto Web site.

Felizmente, isso vai ser suficiente para você começar a experimentar. Como outros apontaram, porém, para um site real, você é muito melhor fora de usar o Google (ou algum outro) analytics solução para isso.

Use Google Analytics . Não tente reinventar a roda a menos que a) a roda não faz o que você quer ou b) você está apenas tentando descobrir como a roda funciona

Eu posso apenas a segunda sugestão de Gareth para usar uma análise de tráfego já está disponível. Se você não gosta da idéia de dar os dados do Google sobre o tráfego do seu site, você também pode baixar os arquivos de log e analisá-los com um dos muitos ferramentas de análise de arquivo de log do servidor web disponível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top