.NET 2005 实现在线人数统计

前几天有个朋友问起如何在.NET 2005中实现网站在线人数的统计,因为我们用的是C#,记得当时在网上找了好久也没找到适和的方法,最近不是很忙,在网上找了一些资料研究了一下,差不多已经能实现了,现将代码共享一下:

首先在项目中选择“添加新项”,添加“Global.asax”全局变量文件,修改其中的 Session_Start 和 Session_End 方法;代码如下:

 void Session_Start(object sender, EventArgs e)
    {
        // 在新会话启动时运行的代码
        Session.Timeout = 5; //设置Session的有效时间,可根据需要修改
        Application.Lock();
        Application["zzzonline"] = Convert.ToInt32(Application["zzzonline"]) + 1;
        Application.UnLock();
    }

    void Session_End(object sender, EventArgs e)
    {
        // 在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
        // 或 SQLServer,则不会引发该事件。
        Application.Lock();
        Application["zzzonline"] = Convert.ToInt32(Application["zzzonline"]) - 1;
        Application.UnLock();
    }

这样就可以在.aspx页面调用了;
<asp:Label ID="Label1" runat="server">当前在线&nbsp;<font color=red><%=Application["zzzonline"]%></font>&nbsp;人</asp:Label>

posted @ 2007-01-23 10:12 Sunlight 阅读(3958) 评论(20)  编辑 收藏

  回复  引用  查看    
#1楼 2007-01-23 10:15 | teana      
学习了。。
  回复  引用    
#2楼 2007-01-23 11:05 | qiekong [未注册用户]
Session.Timeout = 5;
会不会影响其他页的生命周期,导致超时现象发生
  回复  引用    
#3楼 2007-01-23 11:10 | 嗨嗨 [未注册用户]

  回复  引用  查看    
#4楼 2007-01-23 11:25 | 曾哲      
...........................
  回复  引用    
#5楼 2007-01-23 11:27 | hehe [未注册用户]
在2003上为什么不好使?

应该也能实现才对啊
  回复  引用  查看    
#6楼 2007-01-23 11:37 | jhtchina      
Mark

  回复  引用    
#7楼 2007-01-23 11:48 | Money [未注册用户]
Session.Timeout = 5;
会不会影响其他页的生命周期,导致超时现象发生
这样子的话,根本不能用啊,
Session才5分钟,人家都不用做别的事情了
  回复  引用    
#8楼 2007-01-23 12:27 | It's Me! [未注册用户]
这种用Seesion的方式都不能提供真实的数据。
  回复  引用  查看    
#9楼 2007-01-23 12:27 | lwjj      
学习一下。。。
  回复  引用    
#10楼 2007-01-23 13:33 | gyf19 [未注册用户]
方法不好!
  回复  引用  查看    
#11楼 2007-01-23 13:45 | DavidFa      
不实用!
  回复  引用  查看    
#12楼 [楼主]2007-01-23 14:09 | Sunlight      
Session.Timeout = 5;
在这里它不决定这个程序的运行!没有它在线人数照样可以统计,你可以根据自己的需求将它改的大一点就OK了!!比如:Session.Timeout = 55;
  回复  引用  查看    
#13楼 2007-01-23 14:31 | aspnetx      
和asp一样的思路

只是为了说得更准确些,建议楼主使用如下标题:
VS2005下实现asp.net在线人数的统计
ASP.NET2.0实现在线人数的统计
C#实现在线人数的统计

.net是框架,最新的版本是3.0,当然楼主所描述的是2.0,对应的asp.net版本是2.0
2005通常来说指的就是visual studio,它是个IDE
而在叫法上,vs2003.net是.net1.1的IDE,而vs2005(注,没有.net,就是vs2005)是2.0的IDE,当然3.0现在也可以
  回复  引用    
#14楼 2007-01-23 15:07 | 个人知识空间 [未注册用户]
这个方法行吗?
  回复  引用  查看    
#15楼 2007-01-23 17:09 | Cat Chen      
其实至今为止也没有比当年ASP更准确的在线人数统计法出现啊,无论如何都是通过Session的Start和End来统计,总会有一定的偏差(Session.Timeout范围内),除非你做成Comet应用吧。

ASP.NET比ASP先进的地方时,Session除了可以保存在InProc,还可以保存到StateServer或SqlServer,但如果不是保存在InProc,则End事件不会被触发,这是需要说明的。
  回复  引用  查看    
#16楼 2007-01-24 01:41 | IcE      
确实是比较老的方法了.

这种方法不是很好,不过也不知道什么方法更好.将就着用也是可以的.
  回复  引用    
#17楼 2007-01-24 09:55 | 天天向上 [未注册用户]
这个方法确实有点古老,并且不是很精确。.net 2.0 下,可以有很好的法子得到精准的在线人数统计。
请查看应用示例:
http://www.gp2.cn/BbsMain.aspx
  回复  引用    
#18楼 2007-09-18 16:21 | huankfe [未注册用户]
太烂了,根本用不了
一点实用价值都没有
  回复  引用  查看    
#19楼 2008-06-04 07:44 | .NetUser      
有没有比较先进一些的在线人数?


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-23 15:17 编辑过
成果网帮您增加网站收入


相关链接: