如何计算页面访问者的数量? (MVC)

时间:2011-06-28 09:52:30

标签: asp.net-mvc

我想获得ASP.Net MVC中页面的访问者数量。 你知道我该怎么办?

4 个答案:

答案 0 :(得分:2)

您需要在数据库中存储一些信息:

访客IP地址,访问网址(表示用户/访客访问过的网页)

为每个页面创建一个函数,并根据您的数据库列访问URL和IP地址显示您的总计数。

类似(下方)的内容只会跟踪页面访问者的数量,但如果您想要唯一访问,则可以扩展此选项:

void Session_Start(object sender, EventArgs e)
{
    // More secure than storing it application variables(does not rest on application start
    SqlConnection con = null;
    SqlCommand cmd = null;
    try
    {
        con = new SqlConnection();
        con.ConnectionString = "your connection string";
        cmd = new SqlCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandText = "Update tbl_users Set no_of_users=no_of_users+1";
        cmd.ExecuteNonQuery();
    }
    catch (Exception)
    {
        throw;
    }
    finally
    {
        if (con.State.Equals(ConnectionState.Open)) con.Close();
    }    
}

或者,您可以调用存储过程来增加访问次数。

答案 1 :(得分:2)

您始终可以使用Google Analytics:http://www.google.com/analytics/

答案 2 :(得分:2)

我能够使用ASP.NET MVC中的Session变量,sql server db来实现这一点。

注意:我使用会话变量而不是存储客户端IP地址。由于保存所有客户端地址将溢出您的数据库。这类似于显示右上角每个问题的Stackoverflow页面查看属性。

这就是我的工作方式。

  • 每当用户在您的网站中打开特定网页时,计数器会递增,更新的计数将在sql server数据库(可能是任何其他数据库)表中更新。
  • 如果同一用户在同一会话中再次访问同一网页,则不会计入该计数器。这意味着如果用户在同一会话中多次刷新网页,计数器将不会递增,因为该用户只能访问一次。
  • 如果同一访问者关闭了他的会话(比如他关闭浏览器)并重新打开同一个网页,则计数器将会增加,并将其视为单独访问。

以下是我实施它的步骤。

  1. 拥有一个在每个Action方法之前自动调用的方法。
  2. 在此方法中,如果尚未完成会话,则启动会话并检查用户是否已访问此页面。
  3. 现在,相应地更新计数器变量,并在需要时将计数保存到db。
  4. 这是我遵循的完整程序。希望它有所帮助。

    来源:Count number of visitors of a page in asp.net mvc (HIT counter)

答案 3 :(得分:1)

我会使用像AWStats http://awstats.sourceforge.net/

这样的工具

计算唯一身份访问者很难,因为您无法准确识别唯一身份访问者。你只能猜测(IP,Cookies,UserAgend等)。

计算访客可以通过计算会话的开始来完成。但是,如果你的访客不接受甚至温度。饼干,你会过多地计算访客。