我需要顯示有多少用戶正在瀏覽我的網站。該網站在iis7上運行,我們正在使用asp.net 3.5。如何在任何特定時刻在我的網站(IIS7/asp.net)中查找訪問者/用戶的數量?
活動會話的數量是一個好方法嗎? 這個數字不需要很精確。
沒有歷史需要,我只想知道有多少用戶現在在線,並在頁面上顯示。
我需要顯示有多少用戶正在瀏覽我的網站。該網站在iis7上運行,我們正在使用asp.net 3.5。如何在任何特定時刻在我的網站(IIS7/asp.net)中查找訪問者/用戶的數量?
活動會話的數量是一個好方法嗎? 這個數字不需要很精確。
沒有歷史需要,我只想知道有多少用戶現在在線,並在頁面上顯示。
你可以使用這個(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
這可以通過.net從programmaticaly訪問嗎? – oekstrem 2010-04-27 09:12:47
我相信 - 查看性能計數器的System.Diagnostics名稱空間。 看看這個項目:http://www.codeproject.com/KB/dotnet/perfcounter.aspx – 2010-04-27 09:24:57
事實上,這可能是一個更好的:http://www.geekpedia.com/tutorial211_Using-Performance- Counters-in-Csharp.html – 2010-04-27 09:28:50
作爲一般原則,你必須定義你的意思由在線用戶數量決定。
例如,會話通常會持續一段預定的時間,例如30分鐘。根據您期望用戶訪問您的網站的時間長短,會話的持續時間可能主要歸因於用戶不在您的網站上時的空閒時間。
一般而言,您希望在過去的n分鐘內在線的人。會話會在一段時間(配置的會話到期)爲您提供此統計信息,但還有許多其他時間度量可能更具相關性。
完成此操作的一種方法是簡單地讓IIS日誌將其數據推送到數據庫中的表中,而不是本地文件系統。這在網絡服務器級別配置相當簡單。
然後,你可以很容易地繪製一個和全天展示,目前,每週等
當然,如果你有一個高流量的網站,那麼這將導致收集的數據的大量使用。
對於您可能希望在現場監視器來看看EPiServer網站:http://www.episerver.com/add-on-store/episerver-live-monitor/
很多ASP.NET網站有'LastActivityDate'(或相似)在用戶表中的列。您可以使用它計算在最近10分鐘左右活動的所有用戶。 – 2010-04-27 09:04:35