设置cookies后,马上读取无效。

微雨燕双飞 2011-12-01 08:28:04
需求是这样的:根据当前用户cookies["City"]的值判断在哪个城市,如果cookies["City"]为空则HttpContext.Current.Response.Cookies.Add(Cookie);添加名为“City”的cookies,接着我马上读取这个“City”:HttpContext.Current.Request.Cookies[strName]; 但是始终都读取不到刚才设置的cookies的值。不知道是为什么!期盼高手能够解决这个问题。难道不可以设置后马上读取cookies吗? 更奇怪的是本机调试可以读取,外网测试的话 就读取不了了。
...全文
425 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liukaizxc 2011-12-01
  • 打赏
  • 举报
回复
那就是你的编码格式不一致导致的
英文或者数字cookie 能正常保存 中文的不能保存
所以你外网就获取不到 cookie 自己本机是可以的
我也遇到过 纠结了一个礼拜的问题
zorro911 2011-12-01
  • 打赏
  • 举报
回复
赋值
Response.Cookies["City"].Value = Server.UrlEncode("值");//编码一下防止乱码
Response.Cookies["City"].Expires = DateTime.Now.AddDays(1);
取值
Server.UrlDecode(Request.Cookies["City"].Value);
微雨燕双飞 2011-12-01
  • 打赏
  • 举报
回复
过期时间已经设置了。 调试完全没有问题 因为那是本机测试。 我的问题是通过外网访问 才出现上面讨论的问题。
porschev 2011-12-01
  • 打赏
  • 举报
回复

下面是cookies的一些操作。。LZ可以看看

http://www.cnblogs.com/zhongweiv/archive/2011/11/08/Cookies.html
liukaizxc 2011-12-01
  • 打赏
  • 举报
回复
cookie.Expires = DateTime.Now.AddYears(1);
像这样设置了有效时间吗?
ms 2011-12-01
  • 打赏
  • 举报
回复
先清除浏览器缓存
风2013 2011-12-01
  • 打赏
  • 举报
回复
单步调试一下,看看每一步的结果,只要设置了 不可能读取不到的,另外给cooike 加个过期时间
cooike.Expires = DateTime.Now.AddDays(7);
这是同一个项目 作用域就不要设置了,检查下存入的读取的cooike的名称有什么不一样的



微雨燕双飞 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 feng1366259807 的回复:]
引用 4 楼 cqkxzyi 的回复:

引用 1 楼 liukaizxc 的回复:
没设置cookies 有效时间


为什么我本机调试可以获取到,在外网测试就不可以。。这个是什么原因可以告诉我吗

作用域出了问题 把你cooike的存和读取的代码贴出来看看
[/Quote]

我的完整代码:
string strCityName = GetRequest.GetCookie("NowCity");
//判断strCityName 是否存在
不存在则要设置,我是跳转到另外一个页面去设置
HttpContext.Current.Response.Redirect("~/WebUI/SelectCity.aspx?city=北京市" );
SelectCity.aspx这个页面里面初始化的时候就判断是否存在city参数,存在的调用下面的方法设置cookies: HttpContext.Current.Response.Cookies.Add(Cookie);具体细节就不写了。
接着跳回原来的页面Response.Redirect("Index.aspx");
问题来了: 在这个页面检查cookies :string strCityName = GetRequest.GetCookie("NowCity");
还是没有找到 我在ie里面看cookies value是233。不知道是为什么
liukaizxc 2011-12-01
  • 打赏
  • 举报
回复
当你程序创建cookies 后
你在本地C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
这里能找到你程序创建的cookies 吗?
没设置有效时间 他是不会持久化的 也就是存在硬盘中

格桑花 2011-12-01
  • 打赏
  • 举报
回复
接着我马上读取这个“City”:HttpContext.Current.Request.Cookies[strName];这里取到的不是city的
风2013 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cqkxzyi 的回复:]

引用 1 楼 liukaizxc 的回复:
没设置cookies 有效时间


为什么我本机调试可以获取到,在外网测试就不可以。。这个是什么原因可以告诉我吗
[/Quote]
作用域出了问题 把你cooike的存和读取的代码贴出来看看
chen_ya_ping 2011-12-01
  • 打赏
  • 举报
回复
设置一个有效的时间大一点,试试看。然后可以用chrome的开发者工具调试一下。
微雨燕双飞 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liukaizxc 的回复:]
没设置cookies 有效时间
[/Quote]

为什么我本机调试可以获取到,在外网测试就不可以。。这个是什么原因可以告诉我吗
ximenwuji 2011-12-01
  • 打赏
  • 举报
回复
必须发送到客户端才能读取,否则就用session
黄亮 2011-12-01
  • 打赏
  • 举报
回复
如果页面还没传给客户端,request的cookie中当然没有,注意Response是本次返回,Request是接收的请求在Response之前。
liukaizxc 2011-12-01
  • 打赏
  • 举报
回复
没设置cookies 有效时间

62,046

社区成员

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

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

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

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