Cookie如何在ASP.NET中运行?

我工作的网站由几个项目组成(用几种语言编写)。 现在,我们必须在查询字符串和会话变量中使用一些笨拙的代码,以便在人们从一个项目转到另一个项目时让他们登录。 由于cookie是特定于域的,我们试图转换为它们,因为它们可以使用一种语言在一个项目中设置,但可以使用不同的语言由不同的项目(在同一域上)访问。

但是,我在更改cookie的值并删除它时遇到问题。 或者更具体地说,我无法对cookies进行任何更改。

例如,在我的注销代码中:

if (Request.Cookies["thisuserlogin"] != null) { HttpCookie myCookie = new HttpCookie("thisuserlogin"); myCookie.Value = String.Empty; myCookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(myCookie); Response.Cookies.Set(myCookie); litTest.Text = myCookie.Expires.ToString() + "
" + Request.Cookies["thisuserlogin"].Expires.ToString(); }

我结束了昨天的一行,下一行是1/1/0001 12:00:00,即使他们应该是相同的cookie。 那么,为什么即使设置了cookie,它的价值也没有改变? 有没有办法强制用户的计算机更新cookie的值,包括删除?

非常感谢你。 PS您可以提供任何URL,以便为cookie提供易于理解的入门,我们将不胜感激。

http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

 if (Request.Cookies["thisuserlogin"] != null) { HttpCookie byeCookie = new HttpCookie("thisuserlogin"); byeCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(byeCookie); // Update Client Response.Redirect(Request.RawUrl); } 

您应该在客户端使用像Fiddler这样的工具来捕获所有来回传输的数据。 这将帮助您看到您的cookie应该设置为过去的日期(并且在下一个请求中也会丢失)。

至于你的文本框输出,你列出了你创建的过期时间的cookie和请求 cookie的过期时间,它没有。 如果您要查看响应cookie,则应该看到正在设置的日期。 此外,不需要调用Response.Cookies.SetResponse.Cookies.Add应该是你所需要的。