之前写个这种类似的访问网站次数的小程序,但一直对cookie的使用很模糊。今天工作之余又做了次试验,问题又是让人纠结,至于什么问题呢,看看下面的过程吧。。。
string ip = Request.UserHostAddress;//获取本机ip 也是cookie的名称
if (Request.Cookies[ip] == null)//读取cookie判断cookie中是否有此ip的cookie
{
//新建一个cookie
/*1.SetCookie方式*/
//Response.SetCookie(new HttpCookie(ip, "1"));//新建一个cookie
/*2.Add方式*/
HttpCookie cookie = new HttpCookie(ip, "1");
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie); //将cookie写回到客户端
/*3.AppendCookie方式*/
// Response.AppendCookie(cookie);
}
else
{
string a = Request.Cookies[ip].Value;
int b = Convert.ToInt32(a);
Request.Cookies[ip].Value = Convert.ToString(b + 1);//修改此cookie的value值
Response.Cookies.Set(Request.Cookies[ip]);//更新此cookie
this.txtUserName.Value = Request.Cookies[ip].Value;//返回客户端
//在此过程中至始至终一个ip只能有一个cookie 不要把更新vlaue后的cookie附到
//一个新建的cookie中以免导致浏览器关闭后cookie重置现象
Response.Write("第" + Request.Cookies[ip].Value + "次");
}
这样在VS中运行起来没有问题,但发现第二次运行cookie又初始化为1。反复查看代码没发现代码有问题,还让同事过来帮忙检查代码,也没发现问题。(悲催%>_<%)
后来同事给出个主意:把工程部署到iis上看看,经测试没问题(正常记录访问次数)。看来VS自带的server有问题?至于原因有待以后研究。。。