zoukankan      html  css  js  c++  java
  • C#怎么统计网站当前在线人数

    1.问题背景

           c#网站怎么合理的统计在线人数?我想通过全局变量来统计软件的使用情况,当启动软件时向服务器的用户表写开始使用时间,正常退出时写一个结束使用时间,来统计用户的在线使用情况。

           但是有一个问题:用户可能不会正常退出,比如电脑断电了,或是直接从进程里面结束... ... 当这种情况下这个结束使用时间怎么获取呢?于是,一场追逐梦想的征途开始了~~~

    2.创建项目

    打开vitualstudio2019,新建一个网站,然后添加新项,新建一个login.aspx和index.aspx页面。再添加新项,选择全局应用程序类,该页面为Global.asax。

       2.1.打开Global.asax页面,在Application_start()方法下写入以下代码:

    Application.Add("zzzonline", 0);

       2.2.在Session_start()方法中写入以下代码:

    Application.Lock();
    Application["zzzonline"] = Convert.ToInt32(Application["zzzonline"]) + 1;
    Application.UnLock();

       2.3.在Session_end()方法中写入以下代码:

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

      2.4.到这里我们的在线人数就已经获取到了,可以通过Label控件或者其他控件输出当前在线人数,如:

    Label1.Text=Application["zzzonline"].ToString()+""

    总结:这篇随笔里面我们记录了通过asp.net全局变量及Application统计在线人数,在新会话产生时增加在线人数,超时未响应则减去当前计数,这里超时时长可以在webconfig中设置,默认为5分钟;在线人数永远都不可能是个精确的值因为它要受时间和性能的约束。如果有更好的方法,欢迎留言讨论!

  • 相关阅读:
    WebServce之Map类型传输
    WebService之跨域
    WebServce之拦截器
    Webservice之发布
    JAVA之ElasticSearch
    MonogoDb学习笔记
    DotNetCore自带Ioc使用程序集名称注入
    生产者与消费者
    哈希算法-Time33
    线程安全的集合操作类
  • 原文地址:https://www.cnblogs.com/sgxw/p/13395707.html
Copyright © 2011-2022 走看看