我想跟踪我网站的访问者数量。
我在 Global.asax 类中尝试了以下代码,
<script runat="server">
public static int count = 0;
void Application_Start(object sender, EventArgs e)
{
Application["myCount"] = count;
}
void Session_Start(object sender, EventArgs e)
{
count = Convert.ToInt32(Application["myCount"]);
Application["myCount"] = count + 1;
}
</script>
我正在检索 aspx 页面中的值,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
int a;
a = Convert.ToInt32((Application["myCount"]));
Label4.Text = Convert.ToString(a);
if (a < 10)
Label4.Text = "000" + Label4.Text ;
else if(a<100)
Label4.Text = "00" + Label4.Text;
else if(a<1000)
Label4.Text = "0" + Label4.Text;
}
上面的编码工作正常。它正确生成访问者,但问题是当我重新启动系统时,计数变量再次从 0 开始,这在逻辑上是错误的。
我希望 count 的值从最后一个 count 值增加 1。
那么谁能告诉我如何完成这个任务呢?
请帮帮我!
提前致谢!
如果您希望计数在应用程序重新启动时保持递增,则需要将该值存储在某个位置 - 数据库或文件中的某个位置,并在应用程序启动时加载该值。
此外,您可以使用以下命令来确保显示的计数始终至少为 4 个字符:
int a;
a = Convert.ToInt32(Application["myCount"]);
Label4.Text = a.ToString("0000");
See 自定义数字格式字符串 http://msdn.microsoft.com/en-us/library/0c899ak8.aspx了解更多信息。
编辑以回复评论
就我个人而言,我建议使用数据库而不是写入文件系统,至少出于以下原因:
- 根据您的主机,设置数据库可能比启用对文件系统的写访问容易得多。
- 使用数据库将允许您将其存储为
int
而不是一个string
.
- 在流量大的情况下,您会遇到多个线程尝试打开文本文件进行写访问的问题 - 这将导致文件锁定,并导致您不需要的瓶颈。
各种资源将告诉您如何从代码连接到数据库,一个好的起点是如何:连接到 SQL Server http://msdn.microsoft.com/en-us/library/ms998300.aspx,并研究“有哪些替代方案 http://msdn.microsoft.com/en-us/library/ms971491.aspx#commandbuilder%20post%20edit_topic4》详细了解如何查询和更新数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)