急!我的cookies更新不了?

coudoufu 2006-08-22 11:35:24
我是这样写入的:
HttpCookie myCookie = new HttpCookie("SupperCookies");
..................省略..............
myCookie["HomeID"] = 'aaa';
HttpContext.Current.Response.Cookies.Add(myCookie);

在用户做某个操作后,我想把其中的某一个值改变,比如myCookie["HomeID"]之前是'aaa',现在想改成'bbb',就是实现不了啊,开始是根据旧cookies来生成一个新cookies,让要改变的值不同,后来是直接改了值,再调用SetCookie方法,也还是不行啊。
...全文
243 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanguoji84 2006-08-23
  • 打赏
  • 举报
回复
cookie要按照你自己定义的变量名来赋值和取值例:Mycookie.Values["HomeID"] = "aaa";

这样就可以覆盖了
scow 2006-08-23
  • 打赏
  • 举报
回复
values, cookie里还有子键
scow 2006-08-22
  • 打赏
  • 举报
回复
if (HttpContext.Current.Request.Cookies[strRootCookiesName] != null)里面,不用再new了,直接改cookiesOld
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
我也这样做了啊,读出旧cookies,根据它的值生成新cookies,再让旧cookies失效,但是这样还是不行啊。
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);
}
scow 2006-08-22
  • 打赏
  • 举报
回复
cookie不能直接更改,修改某个 Cookie 实际上是指用新的值创建新的 Cookie,并把该 Cookie 发送到浏览器,覆盖客户机上旧的 Cookie。
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)
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
我那样写入没有问题,其他地方都可以读取,我现在的问题是我要把我之前写入的cookies更新。
直接重新写入新cookies和更改旧cookies好象都不行,还是没变。
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
我那样写入没有问题,其他地方都可以取
Dennis_maomao 2006-08-22
  • 打赏
  • 举报
回复
HttpCookie Mycookie = new HttpCookie("SupperCookies");
Mycookie.Values["HomeID"] = "aaa";
Response.Cookies.Add(Mycookie );
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
沙发
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
HttpCookie cookiesOld = HttpContext.Current.Request.Cookies[strRootCookiesName];
System.Collections.Specialized.NameValueCollection cookiesValueCollection = cookiesOld.Values;
foreach (string strKey in cookiesValueCollection.Keys)
{
if (strCookiesKey == strKey)
{
cookiesOld[strCookiesKey] = strCookieValue;
}
}
HttpContext.Current.Response.SetCookie(cookiesOld);

我这样写,竟然抛异常了,说值在枚举中被修改,晕死了。
回去再看看。
coudoufu 2006-08-22
  • 打赏
  • 举报
回复
恩,回去看看,但是,又有一个新问题啊。
这样Expires是从当前时间算起了,应该是从第一次写cookies的时间算起啊。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧