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

本文关键字:网站 访问者 计算 asp net | 更新日期: 2023-09-27 18:25:27

如何计算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" />

In.aspx.cs:

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

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

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

应用程序状态不稳定。查看此MSDN链接:

使用应用程序状态时,必须注意以下几点重要注意事项:

  • 。。。

  • 波动性由于应用程序状态存储在服务器内存中无论何时停止或重新启动应用程序,都会丢失。例如如果Web.config文件已更改,则会重新启动应用程序,并且除非应用程序状态值具有已被写入诸如数据库之类的非易失性存储介质。

所以你不应该用它来保存你想长期保存的这种数据。因为应用程序池会不时重新设置种子。我怀疑当这种情况发生时,你不想重置你的访客数量。

您将需要某种类型的数据存储,它可以在应用程序未运行时持久保存您的数据。

以下是一些选择:

  • 文件(XML、JSON、纯文本等):访问者计数器的示例XML代码
  • 数据库(SQL Server、SQLite等):命中计数器的示例数据库代码

在此方法下的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();

然后你就可以得到你网站上的访问者数量。

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

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

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

您应该将动态访问次数保存在根目录下的xml文件中。查看以下博客以了解完整的步骤:如何在asp.net网站中统计访客数量

如果您想在代码级别管理访问者,在需要增加每个会话的计数器后,需要在应用程序配置文件中的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

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