2010-04-27 20 views
5

我需要顯示有多少用戶正在瀏覽我的網站。該網站在iis7上運行,我們正在使用asp.net 3.5。如何在任何特定時刻在我的網站(IIS7/asp.net)中查找訪問者/用戶的數量?

活動會話的數量是一個好方法嗎? 這個數字不需要很精確。

沒有歷史需要,我只想知道有多少用戶現在在線,並在頁面上顯示。

+0

很多ASP.NET網站有'LastActivityDate'(或相似)在用戶表中的列。您可以使用它計算在最近10分鐘左右活動的所有用戶。 – 2010-04-27 09:04:35

回答

4

你可以使用這個(perfmon的)Windows性能計數器

ASP.NET應用程序>活動會話計數器。

您可以使用System.Diagnostics命名空間訪問這些性能計數器。

此代碼爲我工作:

 PerformanceCounter pc = new PerformanceCounter("ASP.NET Applications", 
    "Sessions Active", "__Total__", "MYSERVERHOSTNAME.domain"); 

     while (true) 
     { 
      Console.WriteLine(pc.NextValue()); 
      System.Threading.Thread.Sleep(1000); 
     } 

我如果計數器似乎過高這個問題,讓到這裏看看:http://support.microsoft.com/kb/969722

+0

這可以通過.net從programmaticaly訪問嗎? – oekstrem 2010-04-27 09:12:47

+0

我相信 - 查看性能計數器的System.Diagnostics名稱空間。 看看這個項目:http://www.codeproject.com/KB/dotnet/perfcounter.aspx – 2010-04-27 09:24:57

+0

事實上,這可能是一個更好的:http://www.geekpedia.com/tutorial211_Using-Performance- Counters-in-Csharp.html – 2010-04-27 09:28:50

1

作爲一般原則,你必須定義你的意思由在線用戶數量決定。

例如,會話通常會持續一段預定的時間,例如30分鐘。根據您期望用戶訪問您的網站的時間長短,會話的持續時間可能主要歸因於用戶不在您的網站上時的空閒時間。

一般而言,您希望在過去的n分鐘內在線的人。會話會在一段時間(配置的會話到期)爲您提供此統計信息,但還有許多其他時間度量可能更具相關性。

1

完成此操作的一種方法是簡單地讓IIS日誌將其數據推送到數據庫中的表中,而不是本地文件系統。這在網絡服務器級別配置相當簡單。

然後,你可以很容易地繪製一個和全天展示,目前,每週等

當然,如果你有一個高流量的網站,那麼這將導致收集的數據的大量使用。

相關問題