用application计数。 写在Global.asax里面,用到 Session_Start,Session_End,Application_Start,Application_End,以及lock。-------------------------------------------------------------------下面是我刚随手写的,用Global统计的,带有简单的防丢失数据功能。性能不怎么样,可以说只能供小网站用用。/// <summary>/// 总人数,今日人数,在线人数/// </summary>static int totalCount, todayCount, onlineCount;/// <summary>/// 更新今日访问访问数的标志/// </summary>static DateTime lastCleanUp;/// <summary>/// 锁对象/// </summary>static object _obj = new object();/// <summary>/// 日志文件的路径/// </summary>string logFile = AppDomain.CurrentDomain.BaseDirectory + "visitLog.txt";protected void Application_Start(object sender, EventArgs e){ //刚启动,为了防止服务器意外死机重启等因素,需要从记录文件中读取数目 if (System.IO.File.Exists(logFile)) { string[] lines = System.IO.File.ReadAllLines(logFile); if (lines.Length >= 3) { int.TryParse(lines[0], out totalCount); int.TryParse(lines[1], out todayCount); DateTime.TryParse(lines[2], out lastCleanUp); } } onlineCount = 0;}protected void Session_Start(object sender, EventArgs e){ //锁定对象确定单线程访问 lock (_obj) { //如果日期变化了,将今日访问归零 if (DateTime.Now.Day != lastCleanUp.Day) { lastCleanUp = DateTime.Now; todayCount = 0; } //计数 todayCount++; totalCount++; //为了防止服务器死机重启等意外因素丢失数据,我们每隔50个访客更新一下记录文件 //这个需要根据访问量调整 if (totalCount % 50 == 0) { string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() }; System.IO.File.Delete(logFile); System.IO.File.WriteAllLines(logFile, fns); } //在线人数加1 onlineCount++; }}protected void Session_End(object sender, EventArgs e){ //确保不冲突 lock (_obj) { //在线人数减1 onlineCount--; }}protected void Application_End(object sender, EventArgs e){ //保存当前访问 string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() }; System.IO.File.Delete(logFile); System.IO.File.WriteAllLines(logFile, fns);}