2014-10-04 6 views
6

Come faccio a contare il numero di visitatori per il sito Web in asp.net C#?come contare il numero di visitatori per il sito web in asp.net C#

Sto usando il codice qui sotto:

in global.asax pagina

<%@ Application Language="C#" %> 

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    Application["NoOfVisitors"] = 0; 
} 





void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Application.Lock(); 
    Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1; 
    Application.UnLock(); 
} 

in aspx pagina

<asp:Label runat="server" ID="lbluser" /> 

in .aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    lbluser.Text = Application["NoOfVisitors"].ToString(); 
} 

Il contatore applicazione è in corso il ripristino 0 ogni ora ... Dove ho sbagliato a contare il numero di utenti? ... grazie ...

risposta

1

Se l'applicazione è ospitata in IIS e dispone di un pool di applicazioni, è possibile verificare le Impostazioni di riciclaggio del pool di applicazioni. A seconda della versione, il valore predefinito è 1740 o 29 ore. Forse il pool per la tua applicazione è configurato a 60 o intorno a quel valore? L'impostazione successiva da verificare è il tempo di pausa. Credo che il suo valore predefinito sia 20 su un nuovo server. Puoi impostarlo su 0. Ti raccomando di leggere queste impostazioni prima di cambiarle.

+0

ho ospitato il sito Web in bigrocks .... invierò tali informazioni a loro .... –

+0

in modo che il pool di applicazioni verrà riavviato dopo un certo periodo di tempo? –

1

L'unico motivo possibile potrebbe essere che, hai ospitato la tua applicazione su un server di terze parti? se sì, potrebbe essere che il fornitore potrebbe uccidere la tua applicazione. Ho numerosi casi in cui questi provider uccidono la tua applicazione a seconda dei loro schemi di gestione della memoria.

3

Lo stato dell'applicazione è volatile. Controllare il this MSDN articule:

Quando si utilizza lo stato dell'applicazione, è necessario essere consapevoli dei seguenti importanti considerazioni:

  • ...

  • Volatilità Perché stato dell'applicazione viene memorizzato in memoria del server, si perde ogni volta che l'applicazione viene arrestata o riavviata. Ad esempio, se il file Web.config viene modificato, l'applicazione viene riavviata e lo viene perso tutto lo stato dell'applicazione a meno che i valori dello stato dell'applicazione non abbiano scritto su un supporto di memoria non volatile come un database.

Quindi non si dovrebbe usare quella per il salvataggio di questo tipo di dati che si desidera persistere nel tempo. Poiché i pool di applicazioni vengono ripristinati di volta in volta. E sospetto che tu non voglia ripristinare il conteggio dei visitatori quando ciò accade.

Avrete bisogno di una sorta di archivio dati che possa mantenere i vostri dati quando l'applicazione non è in esecuzione.

Ecco alcune scelte:

0

Semplice memorizzare il numero di visitatori dopo aver modificato il suo valore nel database e all'avvio dell'applicazione caricare questo valore dal database che è tutto ciò che dovete fare.

-1

Il riavvio pool di applicazioni periodicamente le impostazioni predefinite è di 60 minuti. quando il pool di app riavvia anche il riavvio del conteggio.

+0

Benvenuti in SO. La tua risposta non ha nulla a che fare con la domanda. OP vuole sapere, * come contare * – lokusking

1

In global.axas file con questo metodo

void Session_Start(object sender, EventArgs e) 
{ 
// Code that runs when a new session is started 
Application.Lock(); 
Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1; 
Application.UnLock(); 
} 

poi nella tua caricamento della pagina si prega di aggiungere

lblCount.Text = Application["NoOfVisitors"].ToString(); 

allora si può ottenere il numero di visitatori del tuo sito.