如何在ASP.NET C#中统计网站访问者数量

8
我可以帮助您翻译以下内容,这是一个有关IT技术的问题:

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

应用计数器每隔1小时重置为0... 我在统计用户数量时出了什么问题?
8个回答

3

在 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
应用程序状态是易变的。请查看此MSDN文章
当使用应用程序状态时,您必须注意以下重要事项:
- 稳定性:因为应用程序状态存储在服务器内存中,所以每当应用程序停止或重新启动时,应用程序状态就会丢失。例如,如果Web.config文件被更改,则应用程序将重新启动,并且除非应用程序状态值已写入非易失性存储介质(如数据库),否则所有应用程序状态都将丢失。
因此,不应该使用它来保存想要持久化的数据。因为应用程序池会定期重置。我猜你不想在这种情况下重置你的访问者计数。
您需要一些可以在您的应用程序停止运行时保持数据的数据存储区。
以下是一些选择:
- 文件(XML、JSON、纯文本等):访问者计数器示例XML代码 - 数据库(SQL Server、SQLite等):点击次数计数器示例数据库代码

2

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


应用程序池在一定时间后重新启动的方法是什么? - Happy .NET

1

只需将访问者计数器的值更改后存储到数据库中,然后在应用程序启动时从数据库加载该值即可。


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

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


0

1
或者在这里提及所有相关步骤。 - Jamal

-1

应用程序池重新启动的默认设置是每60分钟一次。当应用程序池重新启动时,计数器也会重新开始。


欢迎来到SO。你的回答与问题无关。OP想知道如何计数。 - lokusking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接