zoukankan      html  css  js  c++  java
  • Asp.Net 网站访问人数及在线人数

    很久没有做Asp.Net的项目,突然有一个项目需要网站访问人数及在线人数的统计,特意做一个这样的功能模块。

     在Global.asax文件中添加以下代码

    <%@ Application Language="C#" %>

    <script runat="server">

    string sLogFile = AppDomain.CurrentDomain.BaseDirectory + "VisitedLog.txt";
    void Application_Start(object sender, EventArgs e)
    {
    // 在应用程序启动时运行的代码
    // Code that runs on application startup
    //刚启动,为了防止服务器意外死机重启等因素,需要从记录文件中读取数目
    if (!System.IO.File.Exists(sLogFile))
    {
    System.IO.FileStream fsnew = System.IO.File.Create(sLogFile);
    fsnew.Close();
    }
    string[] lines = System.IO.File.ReadAllLines(sLogFile);
    double iTotalCount = 0;
    int iOnline = 0;
    if (lines != null && lines.Length > 0)
    {
    Double.TryParse(lines[lines.Length - 1].ToString(), out iTotalCount);
    }
    Application["TotalCount"] = iTotalCount;
    Application["Online"] = iOnline;

    }

    void Application_End(object sender, EventArgs e)
    {
    // 在应用程序关闭时运行的代码
    System.IO.StreamWriter rw = System.IO.File.CreateText(sLogFile);
    rw.WriteLine(Application["TotalCount"]);
    //rw.WriteLine();
    rw.Flush();
    rw.Close();

    }

    void Application_Error(object sender, EventArgs e)
    {
    // 在出现未处理的错误时运行的代码

    }

    void Session_Start(object sender, EventArgs e)
    {
    // 在新会话启动时运行的代码

    // Code that runs when a new session is started
    Session.Timeout = 10;
    Application.Lock();
    Application["TotalCount"] = System.Convert.ToDouble(Application["TotalCount"]) + 1;
    Application["Online"] = System.Convert.ToInt32(Application["Online"]) + 1;
    Application.UnLock();
    if (Convert.ToInt32(Application["TotalCount"]) % 50 == 0)
    {
    System.IO.StreamWriter rw = System.IO.File.CreateText(sLogFile);
    rw.WriteLine(Application["TotalCount"]);
    //rw.WriteLine();
    rw.Flush();
    rw.Close();
    }

    }

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

    }

    </script>
  • 相关阅读:
    kafka系列教程5(客户端实践)
    log4j示例-Daily方式(log4j.properties)
    Log4j.xml配置(rolling示例)
    Log4j配置详解之log4j.xml
    kafka 常用命令
    linux下进程cpu占用过高问题定位方法
    Linux 操作系统主机名变成bogon怎么解决?
    网络基础 Windows控制台下Ftp使用简介
    网络基础 cookie详解
    网络基础 http 会话(session)详解
  • 原文地址:https://www.cnblogs.com/gzh4455/p/2431316.html
Copyright © 2011-2022 走看看