【问题标题】:how to count number of visitors for website in asp.net c#如何在asp.net c#中计算网站的访问者数量
【发布时间】:2014-10-04 04:23:26
【问题描述】:

asp.net c#中如何统计网站的访问者数量?

我正在使用下面的代码:

在 global.asax 页面中:

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

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    Application["NoOfVisitors"] = 0;
}

void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    Application.Lock();
    Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1;
    Application.UnLock();
}

在 .aspx 页面中:

<asp:Label runat="server" ID="lbluser" />

在 .aspx.cs 中:

protected void Page_Load(object sender, EventArgs e)
{
    lbluser.Text = Application["NoOfVisitors"].ToString();
}

应用程序计数器每隔一小时重置为 0 ... 我在统计用户数量时哪里出错了?

【问题讨论】:

    标签: c# asp.net global


    【解决方案1】:

    应用程序状态是不稳定的。检查this MSDN articule

    在使用应用程序状态时,您必须注意以下几点 重要的考虑因素:

    • ...

    • 易失性 因为应用程序状态存储在服务器内存中,它 每当应用程序停止或重新启动时都会丢失。例如, 如果更改了 Web.config 文件,则重新启动应用程序并 所有应用程序状态都将丢失,除非应用程序状态值具有 已写入数据库等非易失性存储介质。

    因此,您不应该使用它来保存您希望随着时间推移而持久保存的此类数据。因为应用程序池会不时重置。而且我怀疑您不想在发生这种情况时重置访问者数量。

    您需要某种数据存储,以便在您的应用程序未运行时保存您的数据。

    这里有一些选择:

    【讨论】:

      【解决方案2】:

      在这个方法下的global.asax文件中

      void Session_Start(object sender, EventArgs e)
      {
      // Code that runs when a new session is started
      Application.Lock();
      Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1;
      Application.UnLock();
      }
      

      然后在您的页面加载中请添加

      lblCount.Text = Application["NoOfVisitors"].ToString();
      

      然后您可以获取您网站上的访问者数量。

      【讨论】:

        【解决方案3】:

        如果您的应用程序托管在 IIS 中并具有应用程序池,您可以检查应用程序池回收设置。根据您的版本,默认值为 1740 或 29 小时。也许您的应用程序的池配置为 60 或大约该值?下一个要检查的设置是空闲超时。我相信它在新服务器上的默认值是 20。您可以将其设置为 0。我建议您在更改它们之前阅读这些设置。

        【讨论】:

        • 这样应用程序池将在一定时间后重新启动?
        【解决方案4】:

        唯一可能的原因可能是,您是否将应用程序托管在第三方服务器上?如果是,则可能是提供商可能正在杀死您的应用程序。我有很多案例,这些提供商根据他们的内存管理方案杀死你的应用程序。

        【讨论】:

          【解决方案5】:

          在将其值更改为数据库并在应用程序启动时从数据库中加载此值后,简单地存储访问者计数,这就是您所要做的。

          【讨论】:

            【解决方案6】:

            您应该将访问次数保存在根目录下的 xml 文件中。查看以下博客了解完整步骤:How to count number of visitors in asp.net website

            【讨论】:

            • 或者在此提及所有相关步骤。
            【解决方案7】:

            如果您想在代码级别管理访问者,您需要在每次会话增加计数器后,在应用程序配置文件中的 Application_Start 方法下启动访问者计数器。有关详细信息,请点击下面给出的链接。

            void Session_Start(object sender, EventArgs e)
            {
            // Code that runs when a new session is started
            Application.Lock();
            Application["NoOfVisitors"] = (int)Application["NoOfVisitors"] + 1;
            Application.UnLock();
            }

            http://www.freshcodehub.com/Article/49/show-number-of-visitors-in-aspnet-application

            【讨论】:

              【解决方案8】:

              应用程序池定期重启默认设置为 60 分钟。 当应用程序池重新启动时,计数也会重新启动。

              【讨论】:

              • 欢迎来到 SO。您的回答与问题无关。 OP 想知道,如何计算
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-09-18
              • 1970-01-01
              • 1970-01-01
              • 2016-10-30
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多