Asp.net2.0下利用Global.asax全局文件实现流量分析

一、预览效果:
技术分享
二:建立数据库脚本:

技术分享CREATE TABLE [dbo].[Yp_VisitStat] (
技术分享    [iVisitStat_ID] [int] IDENTITY (1, 1) NOT NULL ,
技术分享    [sIntoIP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
技术分享    [dIntoTime] [datetime] NULL 
技术分享) ON [PRIMARY]
技术分享GO
技术分享
技术分享ALTER TABLE [dbo].[Yp_VisitStat] ADD 
技术分享    CONSTRAINT [PK_Yp_VisitStat] PRIMARY KEY  CLUSTERED 
技术分享    (
技术分享        [iVisitStat_ID]
技术分享    )  ON [PRIMARY] 
技术分享GO

三、前台Aspx页面代码:

技术分享<table class="tableBorder" cellspacing="1" cellpadding="2" width="100%" border="0" style="text-align: center">
技术分享        <tr>
技术分享        <th style="HEIGHT: 21px" colspan="2" >
技术分享            <span style="font-size: 10pt; color: #ffffff">网站综合流量分析</span></th>
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">给合流量统计:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享            <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>&nbsp;&nbsp;
技术分享            <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
技术分享         </td>
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">上月流量统计:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享        <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>&nbsp;&nbsp;
技术分享        <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>
技术分享        </td>       
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">本月流量统计:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享        <asp:Label ID="Label7" runat="server" Text="Label"></asp:Label>&nbsp;&nbsp;
技术分享        <asp:Label ID="Label8" runat="server" Text="Label"></asp:Label>
技术分享        </td>       
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">昨日流量统计:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享        <asp:Label ID="Label9" runat="server" Text="Label"></asp:Label>&nbsp;&nbsp;
技术分享        <asp:Label ID="Label10" runat="server" Text="Label"></asp:Label>
技术分享        </td>       
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">今日流量统计:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享        <asp:Label ID="Label11" runat="server" Text="Label"></asp:Label>&nbsp;&nbsp;
技术分享        <asp:Label ID="Label12" runat="server" Text="Label"></asp:Label>
技术分享        </td>       
技术分享        </tr>
技术分享        <tr>
技术分享        <td class="TableRow2" style="text-align: right; width: 126px;">当前在线状况:</td>
技术分享        <td class="TableRow2" style="text-align: left;">
技术分享        <asp:Label ID="Label13" runat="server" Text="Label"></asp:Label>
技术分享        </td>       
技术分享        </tr>        
技术分享</table>  


四、后置代码类:

技术分享using System;
技术分享using System.Data;
技术分享using System.Configuration;
技术分享using System.Collections;
技术分享using System.Web;
技术分享using System.Web.Security;
技术分享using System.Web.UI;
技术分享using System.Web.UI.WebControls;
技术分享using System.Web.UI.WebControls.WebParts;
技术分享using System.Web.UI.HtmlControls;
技术分享using System.Data.SqlClient;
技术分享
技术分享protected void Page_Load(object sender, EventArgs e)
技术分享    {
技术分享        if (!Page.IsPostBack)
技术分享        {            
技术分享            VisitStat();
技术分享        }
技术分享    }
技术分享private void VisitStat()//流量分析
技术分享    {
技术分享        string LastMonthBegin = DateTime.Today.AddMonths(-1).ToString("yyyy-MM") + "-01 00:00:01";//上个月的起始时间
技术分享        string ThisMonthBegin = DateTime.Today.AddMonths(0).ToString("yyyy-MM") + "-01 00:00:01";//本个月的起始时间
技术分享        string NextMonthBegin = DateTime.Today.AddMonths(1).ToString("yyyy-MM") + "-01 00:00:01";//下个月的起始时间
技术分享        string YesterdayBegin = DateTime.Now.AddDays(-1).ToString("d") + " 00:00:01";//昨天的起始时间
技术分享        string TodayBegin = DateTime.Now.AddDays(0).ToString("d") + " 00:00:01";//今天的起始时间
技术分享        string TomorrowBegin = DateTime.Now.AddDays(1).ToString("d") + " 00:00:01";//明天的起始时间
技术分享        Label3.Text = "累计PV浏览量:" + SqlResult("select count(sIntoIP) from [Yp_VisitStat]");
技术分享        Label4.Text = "累计独立IP浏览量:" + SqlResult("select distinct count(distinct sIntoIP) from [Yp_VisitStat]");
技术分享        Label5.Text = "上个月PV浏览量:" + SqlResult("select count(sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + LastMonthBegin + "‘and dIntoTime<‘" + ThisMonthBegin + "‘");
技术分享        Label6.Text = "上个月独立IP浏览量:" + SqlResult("select count(distinct sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + LastMonthBegin + "‘and dIntoTime<‘" + ThisMonthBegin + "‘");
技术分享        Label7.Text = "本月PV浏览量:" + SqlResult("select count(sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + ThisMonthBegin + "‘and dIntoTime<‘" + NextMonthBegin + "‘");
技术分享        Label8.Text = "本月独立IP浏览量:" + SqlResult("select count(distinct sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + ThisMonthBegin + "‘and dIntoTime<‘" + NextMonthBegin + "‘");
技术分享        Label9.Text = "昨日PV浏览量:" + SqlResult("select count(sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + YesterdayBegin + "‘and dIntoTime<‘" + TodayBegin + "‘");
技术分享        Label10.Text = "昨日独立IP浏览量:" + SqlResult("select count(distinct sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + YesterdayBegin + "‘and dIntoTime<‘" + TodayBegin + "‘");
技术分享        Label11.Text = "今日PV浏览量:" + SqlResult("select count(sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + TodayBegin + "‘and dIntoTime<‘" + TomorrowBegin + "‘");
技术分享        Label12.Text = "今日独立IP浏览量:" + SqlResult("select count(distinct sIntoIP) from [Yp_VisitStat] where dIntoTime>‘" + TodayBegin + "‘and dIntoTime<‘" + TomorrowBegin + "‘");
技术分享        Label13.Text = "当前共有:<b>" + Application["counter"].ToString() + "</b> 位访问者正在访问网站 !";        
技术分享    }
技术分享
技术分享public static string SqlResult(string MySql)//查询库并返回记录个数
技术分享    {
技术分享        string strResult = null;
技术分享        SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString());
技术分享        Conn.Open();
技术分享        SqlCommand myCommand = new SqlCommand(MySql, Conn);
技术分享        strResult = myCommand.ExecuteScalar().ToString();
技术分享        Conn.Close();
技术分享        Conn.Dispose();
技术分享        return strResult;
技术分享    }


五:Global.asax代码:

技术分享<%@ Application Language="C#" %>
技术分享<%@ Import Namespace="System.Data.SqlClient" %>
技术分享
技术分享
技术分享<script runat="server">
技术分享
技术分享    void Application_Start(object sender, EventArgs e) 
技术分享    {
技术分享        // 在应用程序启动时运行的代码 
技术分享        Application.Lock();        
技术分享        Application["counter"] = 0;        
技术分享        Application.UnLock();
技术分享        
技术分享    }
技术分享    
技术分享    void Application_End(object sender, EventArgs e) 
技术分享    {
技术分享        //  在应用程序关闭时运行的代码
技术分享        Application.Lock();        
技术分享        Application["counter"] = (int)Application["counter"] - 1;       
技术分享        Application.UnLock();
技术分享
技术分享    }
技术分享        
技术分享    void Application_Error(object sender, EventArgs e) 
技术分享    
技术分享        // 在出现未处理的错误时运行的代码
技术分享
技术分享    }
技术分享
技术分享    void Session_Start(object sender, EventArgs e) 
技术分享    {
技术分享        // 在新会话启动时运行的代码
技术分享        Application.Lock();
技术分享        Application["counter"] = (int)Application["counter"]+1;
技术分享        string sIntoIP;
技术分享        string dIntoTime;
技术分享        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
技术分享        {
技术分享            sIntoIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();           
技术分享        }
技术分享        else
技术分享        {
技术分享            sIntoIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();           
技术分享        }
技术分享        dIntoTime = DateTime.Now.ToString();       
技术分享        SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString());
技术分享        Conn.Open();
技术分享        SqlCommand myCommand = new SqlCommand("insert into [Yp_VisitStat] (sIntoIP,dIntoTime) values (‘" + sIntoIP + "‘,‘" + dIntoTime + "‘)", Conn);
技术分享        myCommand.ExecuteNonQuery();
技术分享        Conn.Close();
技术分享        Conn.Dispose();
技术分享        Application.UnLock();
技术分享         
技术分享    }
技术分享
技术分享    void Session_End(object sender, EventArgs e) 
技术分享    {
技术分享        // 在会话结束时运行的代码。 
技术分享        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
技术分享        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
技术分享        // 或 SQLServer,则不会引发该事件。           
技术分享        Application.Lock();       
技术分享        Application["counter"] = (int)Application["counter"] - 1;
技术分享        Application.UnLock();
技术分享    }
技术分享       
技术分享</script>
技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。