【发布时间】:2009-03-14 21:13:25
【问题描述】:
我正在调用以下代码:
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 浏览器(用于开发和生产。
有什么想法吗?
感谢您朝正确的方向轻推。这是我最终得到的结果:
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 方法之外。我还完全重命名了饼干,以确保我从新开始。我可能会得到一点用户的反对,但是哎呀! :)
谢谢!答案被标记为让我朝着正确方向前进的人。
【问题讨论】:
-
我认为你的 if/else 的两半在功能上没有任何不同。他们都会在响应中将 cookie 发送回浏览器。