2014-10-04 75 views
6

如何统计asp.net c#中网站的访问者数量?如何统计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,每隔一小时...... 我在哪里在计数的用户数量犯了错误? ...谢谢你...

回答

1

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

+0

我已经在bigrocks中托管网站....我会将这些信息发送给他们。 – 2014-10-04 04:56:39

+0

这样应用程序池将在特定时间段后重新启动? – 2014-10-04 05:06:36

1

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

3

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

在使用应用程序的状态,你必须注意以下 重要的注意事项:

  • ...

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

所以,你不应该使用保存这类数据要持续一段时间。因为应用程序池会不时重新设置。我怀疑你不想在这种情况发生时重置你的访客数量。

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

这里有一些选择:

0

简单的存储访客计数后,将其值更改为数据库和应用程序开始从数据库中加载这个值,这是你所要做的。

-1

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

+0

欢迎来到SO。你的回答与问题无关。 OP想知道,*如何计算* – lokusking 2016-06-30 07:25:06

1

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

那么你就可以得到您的网站访问者的数量。

相关问题