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

时间:2014-10-04 04:23:27

标签: c# asp.net global

如何计算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 ... 在计算用户数量时我在哪里错了? ...谢谢你......

8 个答案:

答案 0 :(得分:3)

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

  

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

     
      
  • ...

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

  •   

因此,您不应该使用它来保存您希望随时间持续存在的此类数据。因为应用程序池会不时重置。我怀疑你不想重置你的访客数量。

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

以下是一些选择:

答案 1 :(得分:2)

在此方法下的global.axas文件中

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

在将值更改为数据库之后简单存储访问者数量,并在应用程序开始从数据库加载此值,这就是您需要做的所有事情。

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

应用程序池定期重启默认设置为60分钟。 当app pool重启计数重启时。