ASP.. NET访问者计数器

本文关键字:计数器 访问者 NET ASP | 更新日期: 2023-09-27 18:09:41

我正在为我的网页创建一个计数器。我想要实现的是,每次用户访问我的asp.net应用程序时,它都将其数据存储到数据库中。我用的是Global。asax和事件Application_Start。这是我的代码。

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
        WebpageCounter.SaveVisitor(new WebpageVisitor()
        {
            VisitorIP = HttpContext.Current.Request.UserHostAddress,
            VisitedOn = DateTime.Now
        });
    }

但是它从不将任何东西存储到数据库中。SaveVisitor函数已经过测试,它是功能性的。

有什么建议吗?

ASP.. NET访问者计数器

Application_Start()在应用程序域的生命周期内只被调用一次,而不是对您站点的每个请求都调用。参见"ASP。. NET应用程序生命周期概述"

后面代码的代码:

c#

    protected void Page_Load(object sender, EventArgs e)
    {
        this.countMe();
        DataSet tmpDs = new DataSet();
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
        lblCounter.Text = tmpDs.Tables[0].Rows[0]["hits"].ToString();
    }
    private void countMe()
    {
        DataSet tmpDs = new DataSet();
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
        int hits = Int32.Parse(tmpDs.Tables[0].Rows[0]["hits"].ToString());
        hits += 1;
        tmpDs.Tables[0].Rows[0]["hits"] = hits.ToString();
        tmpDs.WriteXml(Server.MapPath("~/counter.xml"));
    }

VB。净

    Protected Sub Page_Load(sender As Object, e As EventArgs)
        Me.countMe()
        Dim tmpDs As New DataSet()
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"))
        lblCounter.Text = tmpDs.Tables(0).Rows(0)("hits").ToString()
    End Sub
    Private Sub countMe()
        Dim tmpDs As New DataSet()
        tmpDs.ReadXml(Server.MapPath("~/counter.xml"))
        Dim hits As Integer = Int32.Parse(tmpDs.Tables(0).Rows(0)("hits").ToString())
        hits += 1
        tmpDs.Tables(0).Rows(0)("hits") = hits.ToString()
        tmpDs.WriteXml(Server.MapPath("~/counter.xml"))
    End Sub

XML文件看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<counter>
  <count>
     <hits>0</hits>
  </count>

Application_Start仅在进程创建时运行,而不是每次访问。

你可以用Application_BeginRequest代替

IIS可以记录这些信息,然后使用出色的日志解析器进行查询/转换。你也可以把谷歌分析放在你的网站上——它的免费版本对所有网站都足够了,除了最繁忙的网站。如果你仍然觉得有必要自己做这件事,那么Application_BeginRequest是一个更好的记录这个的地方。

EDIT:你可以实现它作为一个模块,像MSDN自定义模块漫步,然后你的应用程序可以更模块化一点