asp.net cookie问题
Request.Cookies["pro"]为什么这里面没有值?
附上cookie代码:
string[] strPro;
int count = 0; //记录strPro数据中有没有包含重复的ID
private void Cookies(string proID) {
if (Request.Cookies[proID]!=null) //如果cookies存在的话,就在原先cookies上修改
{
string pro = Request.Cookies[proID]["proID"].ToString();
string times = Request.Cookies[proID]["times"].ToString();
if (pro.Split(',').Length>0)
{
strPro = pro.Split(',');
}
//循环strPro数组,判断数组中有没有包含重复的ID,有的话count+1
for (int i = 0; i < strPro.Length; i++)
{
if (strPro[i]==proID)
{
count += 1;
}
}
//count==0代表数组中没有重复的数据,反之
if (count==0)
{
pro= pro + "," + proID;
times = times + "," + System.DateTime.Now.ToString();
//修改cookies
Response.Cookies[proID]["proID"] = pro;
Response.Cookies[proID]["times"] = times;
}
}
else //不存在cookies的话,创建一个新的cookies
{
HttpCookie cookie = new HttpCookie("pro"); //定义cookie对象
DateTime dt = DateTime.Now; //定义时间对象
TimeSpan ts = new TimeSpan(10, 10, 1000, 1000000); //cookie有效作用时间
cookie.Expires = dt.Add(ts); //添加作用时间
//增加属性
cookie.Values.Add("proID", proID);
cookie.Values.Add("times", System.DateTime.Now.ToString());
Response.AppendCookie(cookie); //确定写入cookie中
}
}
------解决方案--------------------
HttpCookie cookie = new HttpCookie("pro");
cookie.Values.Add("proID", proID);
cookie.Values.Add("times", System.DateTime.Now.ToString());
Response.AppendCookie(cookie);
这种写法,cookie中永远都只有一个键为“pro”的cookie,他的值为键值对。
例如上面这几句代码会生成如下的cookie:
键:pro
值:proId=abc×=2012-10-22 2:05
对于proId和times的取值:
string pro = Request.Cookies["pro"]["proID"];//第一个键是恒定的
string times = Request.Cookies["pro"]["times"];//第一个键是恒定的
所以你上面的代码时候有些问题。
添加多个cookie:
C# code
HttpCookie cookie = new HttpCookie("cookie_1");
cookie.Value = "value_1";
HttpCookie cookie2 = new HttpCookie("cookie_2");
cookie2.Value = "value_2";
Response.AppendCookie(cookie);
Response.AppendCookie(cookie2);