zoukankan      html  css  js  c++  java
  • 网站访问统计在Global.asax中的配置的深入讨论

    <%@ Application Language="C#" %>
    <%@ Import Namespace="System.Data.SqlClient" %>//引入这个命名空间一定不能少的。。

    <script runat="server">
       
        DataBase dbs = new DataBase();
        CommonClass coObj = new CommonClass();
        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            int Count = dbs.ExecuteScalar(System.Data.CommandType.Text, "select * from Counts", null);
            Application["LoginTime"] = Count.ToString(); ;//网站访问总计
            Application.Add ("Online",0);//网站在线人数
           
        }
       
        void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码
            if (dbs.ExecuteNonQuery(System.Data.CommandType.Text, "update Counts set counts=" + int.Parse(Application["LoginTime"].ToString ()) + "") == 1)
            {
            }
            else
            {
                Response.Write(coObj.MessageBox("出现错误!"));
            }
           
        }
           
        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码

        }
     
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
            Session.Timeout = 5;
            Session["UserId"] = "";
            Application.Lock();
            dbs.ExecuteNonQuery(System.Data.CommandType.Text, "update Counts set counts=" + int.Parse(Application["LoginTime"].ToString()) + "+1");
            Application["LoginTime"] = dbs.ExecuteScalar(System.Data.CommandType.Text, "select * from Counts", null);
            Application["Online"] = Convert.ToString(int.Parse(Application["Online"].ToString()) + 1);
            Application.UnLock();
        }

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


    这个统计方式的一大好处是可以避免IIS服务器因意外停止时而导致访问总数清0的现现像,因为每一次的访问都会加一然后将数据存入数据库中,保证了数据不会因IIS意外而丢失。

      还有就在要实现在这个功能在有一张专门保存数据的表,这张表只需要一个字段就行了。。
  • 相关阅读:
    MongoDB 安装记录
    Vue.JS 对比其他框架
    CSRF攻击原理以及防御
    浏览器何时发送一个Option请求
    Html5 Canvas核心技术(图形,动画,游戏开发)--基础知识
    CSSOM之getboundingclientrect和getclientrects
    CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
    nodejs 访问mysql
    HTTP请求中的form data和request payload的区别
    html5 drap & drop
  • 原文地址:https://www.cnblogs.com/wantingqiang/p/1236828.html
Copyright © 2011-2022 走看看