如何在任何特定时刻找到我的站点(IIS7 / asp.net)上的访问者/用户数?

时间:2010-04-27 09:01:08

标签: asp.net iis-7 episerver

我需要显示有多少用户正在浏览我的网站。该网站在iis7上运行,我们正在使用asp.net 3.5。

活跃会话的数量是一个好方法吗? 这个数字不需要非常准确。

不需要历史记录,我只是想知道现在有多少用户“在线”,并在页面上显示。

4 个答案:

答案 0 :(得分:4)

您可以使用Windows性能计数器(perfmon)

ASP.NET应用程序> Sessions Active counter。

您可以使用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

答案 1 :(得分:1)

作为一般原则,您必须根据在线用户数量来定义您的意思。

例如,会话通常持续预定义的持续时间,例如30分钟。根据您希望用户在您网站上停留的时间长短,会话的持续时间可能主要归因于用户不在您网站上时的空闲时间。

一般情况下,您希望在过去n分钟内上线的人。会话为您提供一段时间(配置的会话到期)的统计信息,但还有许多其他时间措施可能更具相关性。

答案 2 :(得分:1)

实现此目的的一种方法是简单地让IIS日志将其数据推送到数据库中的表而不是本地文件系统中。这在Web服务器级别很容易配置。

然后,您可以轻松地绘制图表并显示全天,当前,每周等的使用情况。

当然,如果您拥有一个高度流量的网站,那么这将导致收集大量数据。

答案 3 :(得分:0)

对于EPiServer网站,您可能需要查看Live Monitor:http://www.episerver.com/add-on-store/episerver-live-monitor/