我正在调用以下代码:
protected void SetCookieValue( string sCookieName, object oValue, DateTime dtExpires) { Response.Cookies[sCookieName].Value = Utility.ToStringValue(oValue); Response.Cookies[sCookieName].Expires = dtExpires; Response.Cookies.Add(Response.Cookies[sCookieName]); }
日期设定为30天前:
SetCookieValue(sCookieName, null, DateTime.Now.AddDays(-30.0));
为了强制cookie过期.它正在开发我的开发箱(Windows 7,IIS7),但现在在IIS6上失败了.我没有更改此代码,它似乎已经工作了一年多,但在生产网站上,我无法清除此cookie.
IE8中的浏览器处于compat模式(用于命中开发和生产.
有任何想法吗?
感谢你在正确的方向上轻推.这是我最终得到的:
protected void SetCookieValue( string cookieName, object value, DateTime expireDate) { HttpCookie cookie = new HttpCookie(cookieName); cookie.Value = Utility.ToStringValue(value); cookie.Expires = expireDate; if (Request.Cookies[cookieName] != null) { Response.SetCookie(cookie); } else { Response.Cookies.Add(cookie); } }
因此,当我杀死一个cookie时,我会使用名称,空值和DateTime.MinValue到期日期来调用此方法.如果cookie存在,则会更新,如果不存在,则会在到期时添加.
我想使用相同的函数来创建或终止cookie,从而使它不受自己的DeleteCookie方法的影响.我还完全重命名了饼干,以确保我开始新鲜.我可能会对此进行一些用户反击,但是哎呀!:)
谢谢!答案被标记为让我朝着正确方向前进的人.
您应该从Request.Cookies中检索cookie ,然后将过期的cookie添加到Response.Cookies:
public void DeleteCookie(string cookieName) { if (Request.Cookies[cookieName] != null) { HttpCookie myCookie = new HttpCookie(cookieName); myCookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(myCookie); } }