我是这样写入的:
HttpCookie myCookie = new HttpCookie("SupperCookies");
..................省略..............
myCookie["HomeID"] = 'aaa';
HttpContext.Current.Response.Cookies.Add(myCookie);在用户做某个操作后,我想把其中的某一个值改变,比如myCookie["HomeID"]之前是'aaa',现在想改成'bbb',就是实现不了啊,开始是根据旧cookies来生成一个新cookies,让要改变的值不同,后来是直接改了值,再调用SetCookie方法,也还是不行啊。
HttpCookie myCookie = new HttpCookie("SupperCookies");
..................省略..............
myCookie["HomeID"] = 'aaa';
HttpContext.Current.Response.Cookies.Add(myCookie);在用户做某个操作后,我想把其中的某一个值改变,比如myCookie["HomeID"]之前是'aaa',现在想改成'bbb',就是实现不了啊,开始是根据旧cookies来生成一个新cookies,让要改变的值不同,后来是直接改了值,再调用SetCookie方法,也还是不行啊。
Mycookie.Values["HomeID"] = "aaa";
Response.Cookies.Add(Mycookie );
直接重新写入新cookies和更改旧cookies好象都不行,还是没变。
Dim ctrCookie As HttpCookie
Dim counter As Integer
If Request.Cookies("SupperCookies") Is Nothing Then
ctrCookie = New HttpCookie("SupperCookies")
Else
ctrCookie = Request.Cookies("SupperCookies")
End If
ctrCookie.Value = newvalue.ToString
ctrCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(ctrCookie)
if (HttpContext.Current.Request.Cookies[strRootCookiesName] != null)
{
// 获取旧Cookies
HttpCookie cookiesOld = HttpContext.Current.Request.Cookies[strRootCookiesName];
System.Collections.Specialized.NameValueCollection cookiesValueCollection = cookiesOld.Values; // 生成新Cookies
HttpCookie cookieNew = new HttpCookie(strRootCookiesName);
cookieNew.Expires = cookiesOld.Expires;
cookieNew.Domain = cookiesOld.Domain;
foreach (string strKey in cookiesValueCollection.Keys)
{
if (strCookiesKey == strKey)
{
cookieNew[strCookiesKey] = strCookieValue;
}
else
{
cookieNew[strKey] = cookiesValueCollection[strKey];
}
}
cookiesOld.Expires = DateTime.Now.AddDays(-1d); HttpContext.Current.Response.Cookies.Add(cookieNew);
}
这样Expires是从当前时间算起了,应该是从第一次写cookies的时间算起啊。
System.Collections.Specialized.NameValueCollection cookiesValueCollection = cookiesOld.Values;
foreach (string strKey in cookiesValueCollection.Keys)
{
if (strCookiesKey == strKey)
{
cookiesOld[strCookiesKey] = strCookieValue;
}
}
HttpContext.Current.Response.SetCookie(cookiesOld);我这样写,竟然抛异常了,说值在枚举中被修改,晕死了。
回去再看看。