C# 如何在asp.NETC中统计网站的访问人数#

C# 如何在asp.NETC中统计网站的访问人数#,c#,asp.net,global,C#,Asp.net,Global,如何计算asp.net c#中网站的访问者数量 我使用的代码如下: 在global.asax页面中: <%@ Application Language="C#" %> 在.aspx页面中: <asp:Label runat="server" ID="lbluser" /> 应用程序计数器每一小时重置为0。。。 我在计算用户数量时哪里出错了?如果您的应用程序托管在IIS中并且有应用程序池,您可以检查应用程序池回收设置。根据您的版本,默认值为1740或29小时。可能应用

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

我使用的代码如下:

在global.asax页面中:

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

在.aspx页面中:

<asp:Label runat="server" ID="lbluser" />
应用程序计数器每一小时重置为0。。。
我在计算用户数量时哪里出错了?

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

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

应用程序状态不稳定。检查:

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

  • 波动性由于应用程序状态存储在服务器内存中,因此 在应用程序停止或重新启动时丢失。例如 如果Web.config文件已更改,则应用程序将重新启动并 除非应用程序状态值已更改,否则所有应用程序状态都将丢失 已写入非易失性存储介质(如数据库)

因此,您不应该将其用于保存希望随时间持久化的此类数据。因为应用程序池会不时重置。我怀疑你不想在这种情况下重置你的访客数量

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

以下是一些选择:

  • 文件(XML、JSON、纯文本等):
  • 数据库(SQL Server、SQLite等):

您应该将动态访问次数保存在根目录下的xml文件中。查看以下博客以了解完整的步骤:

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

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

在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();

然后,您可以获得站点上的访问者数量。

如果您想在代码级别管理访问者,则需要在每次会话上增加计数器后,在应用程序配置文件中的应用程序\u start方法下启动访问者计数器。有关更多详细信息,请访问以下链接

void会话\u启动(对象发送方,事件参数e)
{
//启动新会话时运行的代码
Application.Lock();
应用程序[“NoOfVisitors”]=(int)应用程序[“NoOfVisitors”]+1;
Application.UnLock();

}
这样应用程序池将在特定时间段后重新启动?或者在此处提及所有相关步骤。欢迎使用so。你的回答与这个问题无关。OP想知道,如何计数
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();