我想跟踪我网站的访问者数量.
我在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>
Run Code Online (Sandbox Code Playgroud)
我正在检索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;
}
Run Code Online (Sandbox Code Playgroud)
上面的编码工作正常.它正确生成访问者,但问题是当我重新启动系统时,count变量再次从0开始,这在逻辑上是错误的.
我希望count的值从最后一个计数值增加1.
那么有人能告诉我如何完成这项任务吗?
请帮帮我!提前致谢!
如果您希望计数在应用程序重新启动时继续递增,则需要将值存储在某个位置 - 在数据库或某个文件中,并在应用程序启动时加载该值.
此外,您可以使用以下内容确保显示的计数始终至少为4个字符:
int a;
a = Convert.ToInt32(Application["myCount"]);
Label4.Text = a.ToString("0000");
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅自定义数字格式字符串.
编辑以回复评论
就个人而言,我建议使用数据库而不是写入文件系统,至少有以下原因:
int而不是string.各种资源将告诉您如何从代码连接到数据库,一个好的起点是如何:连接到SQL Server,并查看"有什么替代方案 " 下的方法有关如何查询和更新数据库.
C#代码显示如下:
protected void Page_Load(object sender, EventArgs e)
{
this.countMe();
enter code here
DataSet tmpDs = new DataSet();
tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
lblCounter.Text = tmpDs.Tables[0].Rows[0]["hits"].ToString();
}
private void countMe()
{
DataSet tmpDs = new DataSet();
tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
int hits = Int32.Parse(tmpDs.Tables[0].Rows[0]["hits"].ToString());
hits += 1;
tmpDs.Tables[0].Rows[0]["hits"] = hits.ToString();
tmpDs.WriteXml(Server.MapPath("~/counter.xml"));
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要在根目录中有一个xml文件,以使代码也能正常工作.XML文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<counter>
<count>
<hits>0</hits>
</count>
</counter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42626 次 |
| 最近记录: |