2009-10-02 12 views
7

Chcę śledzić liczbę odwiedzających moją witrynę.Liczba użytkowników w witrynie WebSite przy użyciu ASP.Net i C#

Próbowałem następujący kod w klasie Global.asax

<script runat="server"> 

    public static int count = 0; 
    void Application_Start(object sender, EventArgs e) 
    { 
    Application["myCount"] = count; 
    } 

    void Session_Start(object sender, EventArgs e) 
    { 
    count = Convert.ToInt32(Application["myCount"]); 
    Application["myCount"] = count + 1; 
    } 

</script> 

jestem pobierania wartości na stronie aspx następująco:

protected void Page_Load(object sender, EventArgs e) 
{ 
    int a; 
    a = Convert.ToInt32((Application["myCount"])); 
    Label4.Text = Convert.ToString(a); 
    if (a < 10) 
    Label4.Text = "000" + Label4.Text ; 
    else if(a<100) 
    Label4.Text = "00" + Label4.Text; 
    else if(a<1000) 
    Label4.Text = "0" + Label4.Text; 
} 

Powyższy kodowania działa dobrze. Generuje odwiedzających prawidłowo, ale problem polega na tym, że gdy ponownie uruchomię system, zmienna licznika ponownie zaczyna się od 0, co jest logicznie błędne.

Chcę, aby wartość liczby została zwiększona o 1 od ostatniej wartości licznika.

Czy ktoś może mi powiedzieć, jak wykonać to zadanie?

Proszę mi pomóc! Z góry dziękuję!

Odpowiedz

7

Jeśli chcesz, aby licznik zwiększał liczbę ponownych uruchomień aplikacji, musisz zapisać ją gdzieś - w bazie danych lub pliku gdzieś i załadować tę wartość w górę podczas uruchamiania aplikacji.

Ponadto, można użyć następujących aby zapewnić wyświetlona liczba jest zawsze co najmniej 4 znaków:

int a; 
a = Convert.ToInt32(Application["myCount"]); 
Label4.Text = a.ToString("0000"); 

Zobacz Custom Numeric Format Strings aby uzyskać więcej informacji.


Edycja w odpowiedzi na komentarz

Osobiście polecam przy użyciu bazy danych nad piśmie do systemu plików, dla co najmniej następujących powodów:

  1. W zależności od Twojego host, utworzenie bazy danych może być znacznie łatwiejsze niż włączenie dostępu do zapisu w systemie plików.
  2. Korzystanie z bazy danych umożliwia zapisanie jej jako int zamiast string.
  3. W przypadku dużego natężenia ruchu wystąpią problemy z wieloma wątkami podczas próby otwarcia pliku tekstowego w celu uzyskania dostępu do zapisu - spowoduje to zablokowanie pliku i spowoduje, że nie będzie potrzeby używania wąskiego gardła.

różnych zasobów powie Ci, jak połączyć się z bazą danych z kodu, to dobre miejsce do rozpoczęcia byłoby to How To: Connect to SQL Server, a patrząc na metodach poniżej „What are the alternatives” za Szczegółowe informacje dotyczące zapytania i aktualizuje bazę danych .

1

Zazwyczaj używa się innych narzędzi do tego zadania (analizator blogów).

Podczas przechowywania wartości w pamięci (aplikacja ["myCount"]) ta wartość nie przetrwa restartu serwera.Więc trzeba przechowywać go w bazie danych

  • Plain TextFile
  • cokolwiek
+0

Ok Dziękuję za odpowiedź. Jeśli nie masz nic przeciwko, możesz mi powiedzieć, jak to zrobić? i czy przechowywanie go w bazie danych lub pliku tekstowym jest korzystne? – Sheetal

6

C# kod jest pokazana poniżej:

protected void Page_Load(object sender, EventArgs e) 
    { 
     this.countMe(); 
    enter code here 
     DataSet tmpDs = new DataSet(); 
     tmpDs.ReadXml(Server.MapPath("~/counter.xml")); 

     lblCounter.Text = tmpDs.Tables[0].Rows[0]["hits"].ToString(); 
    } 

    private void countMe() 
    { 
     DataSet tmpDs = new DataSet(); 
     tmpDs.ReadXml(Server.MapPath("~/counter.xml")); 

     int hits = Int32.Parse(tmpDs.Tables[0].Rows[0]["hits"].ToString()); 

     hits += 1; 

     tmpDs.Tables[0].Rows[0]["hits"] = hits.ToString(); 

     tmpDs.WriteXml(Server.MapPath("~/counter.xml")); 

    } 

Następnie trzeba mieć xml plik w katalogu głównym, aby kod również działał. Plik XML będzie wyglądać następująco:

<?xml version="1.0" encoding="utf-8" ?> 
<counter> 
    <count> 
    <hits>0</hits> 
    </count> 
</counter> 
+0

gdy tandem odświeża stronę, liczba kont wzrasta !! – AminM

2

W pierwszej odpowiedzi u miał zadeklarować zmienną count globalnie, dlatego w każdej nowej liczby sesji rozpoczyna się 0.for lepiej rezultacie aplikacja przyrost [] zmienna wewnątrz metody session_start.

Powiązane problemy