2014-10-04 148 views
6

如何統計asp.net c#中網站的訪問者數量?如何統計asp.net網站的訪問者數量c#

我使用下面的代碼:

在Global.asax的頁面

<%@ 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(); 
} 

在.aspx頁面中

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

在.aspx.cs

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

應用程序計數器被重置爲0,每隔一小時...... 我在哪裏在計數的用戶數量犯了錯誤? ...謝謝你...

回答

1

如果您的應用程序託管在IIS中並且具有應用程序池,則可以檢查應用程序池回收設置。根據您的版本,默認值爲1740或29小時。也許您的應用程序的池配置爲60或大約該值?下一個要檢查的設置是空閒超時。我相信它在新服務器上的默認值是20。您可以將其設置爲0.我建議您在更改它們之前閱讀這些設置。

+0

我已經在bigrocks中託管網站....我會將這些信息發送給他們。 – 2014-10-04 04:56:39

+0

這樣應用程序池將在特定時間段後重新啓動? – 2014-10-04 05:06:36

1

唯一可能的原因可能是,您是否將您的應用程序託管在第三方服務器上?如果是的話,那可能是提供商可能會殺死你的應用程序。我有很多情況下,這些提供程序根據其內存管理方案殺死您的應用程序。

3

應用程序狀態是不穩定的。檢查this MSDN articule

在使用應用程序的狀態,你必須注意以下 重要的注意事項:

  • ...

  • 波動因爲應用程序狀態被存儲在服務器內存時,應用程序停止或重新啓動時,它會丟失 。例如,如果Web.config文件更改爲 ,則應用程序將重新啓動,並且除非應用程序狀態值已將 寫入非易失性存儲介質(如數據庫),否則所有應用程序狀態都將丟失。

所以,你不應該使用保存這類數據要持續一段時間。因爲應用程序池會不時重新設置。我懷疑你不想在這種情況發生時重置你的訪客數量。

您將需要某種數據存儲,可以在應用程序未運行時保留數據。

這裏有一些選擇:

0

簡單的存儲訪客計數後,將其值更改爲數據庫和應用程序開始從數據庫中加載這個值,這是你所要做的。

-1

應用程序池定期重啓默認設置爲60分鐘。 當應用程序池重新啓動計數重新啓動。

+0

歡迎來到SO。你的回答與問題無關。 OP想知道,*如何計算* – lokusking 2016-06-30 07:25:06

1

在global.axas文件時,此方法

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(); 
} 

下,然後在你的頁面加載請加

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

那麼你就可以得到您的網站訪問者的數量。

相關問題