清除Cookies不起作用?设置过期日期方法

klk*_*ens 1 c# asp.net cookies

我正在调用以下代码:

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]);
}
Run Code Online (Sandbox Code Playgroud)

日期设定为30天前:

SetCookieValue(sCookieName, null, DateTime.Now.AddDays(-30.0));
Run Code Online (Sandbox Code Playgroud)

为了强制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);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我杀死一个cookie时,我会使用名称,空值和DateTime.MinValue到期日期来调用此方法.如果cookie存在,则会更新,如果不存在,则会在到期时添加.

我想使用相同的函数来创建或终止cookie,从而使它不受自己的DeleteCookie方法的影响.我还完全重命名了饼干,以确保我开始新鲜.我可能会对此进行一些用户反击,但是哎呀!:)

谢谢!答案被标记为让我朝着正确方向前进的人.

CMS*_*CMS 6

您应该从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);
    }
}
Run Code Online (Sandbox Code Playgroud)