在C#中删除cookie问题
我试图删除一个cookie,但它不会被删除。 这是我尝试使用的代码。
if (Request.Cookies["dcart"] != null)
{
Response.Write(Request.Cookies["dcart"].Expires);
// Response 1/1/0001 12:00:00 AM
Response.Write(Request.Cookies["dcart"].Value);
// Response 229884
HttpCookie myCookie = new HttpCookie("dcart");
myCookie.Expires = DateTime.Now.AddDays(-1d);
myCookie.Value = "";
Response.Cookies.Add(myCookie);
}
Response.Write(Request.Cookies["dcart"].Expires);
// Response 1/1/0001 12:00:00 AM
Response.Write(Request.Cookies["dcart"].Value);
// Response 229884
当我再次检索cookie时,没有任何变化。 我检查w / FireFox和Chrome的相同行为。 有趣的是,到期日期在浏览器上正确显示,但在代码上显示。
我尝试了以下方法,但没有奏效。
PS。 该代码不会直接在你的机器上工作,因为你没有cookie。
解决了
问题是路径。 我请求的cookie位于“/ store”路径下,并且我向“/”响应路径信息。
if (Request.Cookies["dcart"] != null)
{
HttpCookie myCookie = new HttpCookie("dcart");
myCookie.Expires = DateTime.Now.AddDays(-1d);
myCookie.Path = "/store";
Response.Cookies.Add(myCookie);
}
当我添加路径信息时,它被删除。
注意:我使用Firebug来追踪cookie路径。
饼干比他们看起来更复杂。 请阅读以下有关如何使用Cookie的明确说明:
关于饼干的护理和处理
要删除cookie,根据链接的文章,您需要简单地将过期时间设置为过去的任何时间,但不要使用DateTime.MinValue,因为某些浏览器不能正确处理该日期:
如果你想删除客户端机器上的cookie,不要使用明显的Response.Cookies.Remove(“MyCookie”),它只是告诉cookie不要覆盖客户端的cookie(请参阅下面的更详细的解释),设置cookie的Expires属性设置为当前时间之前的任何时间。 这将告诉客户使用过期的cookie覆盖当前的cookie,并且客户端永远不会将其发送回服务器。
同样,诱惑是使用DateTime.MinValue(01-Jan-0001 00:00:00)来删除一个cookie; 再次,这将是一个错误。 这一次,Netscape 7将按预期工作,但Internet Explorer 6认为这是一个例外情况。 如果Internet Explorer收到一个它认为是“空白”失效日期的cookie,它将保留该cookie,直到浏览器关闭并使其到期。
使用DateTime.Now.AddYears(-30)的过期日期来删除Cookie的最安全(也是最对称)的方式。
即正确的方法是
Request.Cookies["dcart"].Expires = DateTime.Now.AddYears(-30);
此链接将为您提供一些答案:
https://msdn.microsoft.com/en-us/library/ms178195.aspx
在我的情况,只是在本地主机工作,但是,当我部署到服务器的问题仍然存在...
在HttpCookie
,可以尝试设置Expire参数DateTime.Now.AddDays(-1d)
,(将Expire date设置为昨天)并设置属性Secure = false
。
之后,为我工作。
链接地址: http://www.djcxy.com/p/11537.html上一篇: Delete cookie issue in C#
下一篇: Android ListView Universal Image Loader Changes Images on Scroll