我需要显示有多少用户正在浏览我的网站。该站点在 iis7 上运行,我们使用的是 asp.net 3.5。
活动会话的数量是一个好方法吗?这个数字不需要非常准确。
不需要历史记录,我只想知道现在有多少用户“在线”,并将其显示在页面本身上。
您可以为此使用 Windows 性能计数器 (perfmon)
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
实现此目的的一种方法是简单地让 IIS 日志将其数据推送到数据库中的表中,而不是本地文件系统中。这很容易在 Web 服务器级别进行配置。
然后,您可以轻松地绘制图表并显示全天、当前、每周等的使用情况。
当然,如果您有一个高流量的网站,那么这将导致收集大量数据。
作为一般原则,您必须定义在线用户数的含义。
例如,会话通常持续一个预定义的持续时间,例如 30 分钟。根据您希望用户在您的网站上停留多长时间,会话的持续时间可能主要归因于用户不在您的网站上时的空闲时间。
一般来说,您需要在过去 n 分钟内在线的人。会话为您提供一段时间内的此统计信息(配置的会话到期),但还有许多其他时间度量可能更相关。
对于 EPiServer 网站,您可能需要查看 Live Monitor:http ://www.episerver.com/add-on-store/episerver-live-monitor/