zoukankan      html  css  js  c++  java
  • asp.net 在线人数统计页面访问量

    1.新建网站,添加几个窗体。webForm1.aspx ,ViewStateForm.aspx

    2.在网站的根目录下添加全局应用程序类“Global.aspx” 。(重要)

    3.在“Global.aspx” 有固有的格式和会话信息结构。

    4.在“Global.aspx”中各个函数中添加处理代码。详细如下:

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

    <script runat="server">

       
        void Application_Start(object sender, EventArgs e)   //初始化站点的在线人数
        {
            // 在应用程序启动时运行的代码//初始化变量:UserCount 和 StatCount

            Application.Lock();      //临界变量,使用加锁功能,其他用户不能访问。
            Application["UserCount"] = 0;
            Application.UnLock();     //临界变量被解锁。

            Application.Lock();      //临界变量,使用加锁功能,其他用户不能访问。
            Application["StatCount"] = 0;
            Application.UnLock();     //临界变量被解锁。

            Application.Lock();      //临界变量,使用加锁功能,其他用户不能访问。
            Application["StatCount_ViewSF"] = 0;
            Application.UnLock();     //临界变量被解锁。


        }
       
        void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码

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

        }

        void Session_Start(object sender, EventArgs e)      //站点在线人数加一
        {
            // 在新会话启动时运行的代码
            Application.Lock();      //临界变量,使用加锁功能,其他用户不能访问。
            Application["UserCount"] = Int32.Parse(Application["UserCount"].ToString()) + 1;
            Application.UnLock();       //临界变量被解锁。
           
            //测试某一页的访问量※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
            String pageurl = Request.Url.ToString();//获取用户访问的页面
           
            if(pageurl .EndsWith ("WebForm1.aspx")) //判断访问的是否是默认页
            {
                //锁定变量
                Application.Lock();
                //页面访问量加一
                Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
                //解锁
                Application.UnLock();
            }

            else if (pageurl.EndsWith("ViewStateForm.aspx")) //判断访问的是否是默认页
            {
                //锁定变量
                Application.Lock();
                //页面访问量加一
                Application["StatCount_ViewSF"] = int.Parse(Application["StatCount_ViewSF"].ToString()) + 1;
                //解锁
                Application.UnLock();
            }
           
           

        }  //&&&&&&&&&&&&&&&****************$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

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

        //Http请求开始和结束时的处理事件
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            //取得表的TabID
            //int tabId = 0; int tabIndex = 0;
            //if(Request .Params ["TabId"]!=null)
            //{
            //    tabId = Int32.Parse(Request .Params ["TabId"]);
               
            //}
            //if(Request .Params ["tabIndex"]!=null )
            //{
            //    tabIndex = Int32.Parse(Request .Params ["TabIndex"]);
            //}
          
        }
        protected void Application_EndRequest(object sender, EventArgs e)
        {
       
        }

        //Http请求验证的处理事件
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
       
        }
     
          
    </script>


    5. 在webForm1.aspx 的相应的CS文件中添加如下的代码:

    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) { OutputUserCount(); }
        }
        protected void OutputUserCount() //显示当前站点在线人数
        {
            Response.Write("站点在线人数:");
            Response.Write(Application["UserCount"].ToString());
            Response.Write("  人。");

            Response.Write("本页面的访问量:");
            Response.Write(Application["StatCount"].ToString());
            Response.Write("   。");
           
        }
    }

    6. ViewStateForm.aspx 的相应的CS文件中添加如下的代码:

    public partial class ViewStateForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           
      
            if (!Page.IsPostBack) { OutputUserCount(); }
        }
        protected void OutputUserCount() //显示当前站点在线人数
        {
            Response.Write("站点在线人数:");
            Response.Write(Application["UserCount"].ToString());
            Response.Write("  人。");

            Response.Write("本页面的访问量:");
            Response.Write(Application["StatCount_ViewSF"].ToString());
            Response.Write("   。");
        }

    }

    7. webconfig 中也有部分对session的配置控制。

     <sessionState   mode="InProc"
       cookieless="true"
       timeout="20" />

    <!--
       会话状态设置
           默认状态下,asp.net 使用 cookie 标示哪些请求属于特定的会话。
        如果cookie 不可用,则可以通过将会话标识符添加到url,来跟踪会话。
        若要禁用cookie ,请设置sessionstate cookieless="true"。
        首次使用了:<sessionState
      mode="InProc"
      stateConnectionString="tcpip=127.0.0.1:42424"
      sqlConnectionString="data source= 127.0.0.1;userid=sa;password="
      cookieless="false"
      timeout="20"
      /> 后便成功了。不知道为什么?新建立了网站,没有用居然也可以。莫名奇妙,看来不是这个的原因,应该是系统暂时性错误。
      -->

    然后就可以在IIS中进行测试了。这个处理方法在IIS重启后就会重新从零进行统计。

  • 相关阅读:
    jQuery学习之------对标签属性的操作
    jQuery学习之------选择器
    PHP读取mysql中的数据
    sql server 数据库创建链接服务器访问另外一个sql server 数据库
    SQLServer使用链接服务器远程查询
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    Delphi XE10百集视频教程计划
    Windows 版本的iTunes 修改iPhone的备份路径
    Centos7 下mysql 密码重置
    Windows server 2012文件服务器配置
  • 原文地址:https://www.cnblogs.com/aiqingqing/p/4460431.html
Copyright © 2011-2022 走看看