C#/ ASP.NET:无法删除指定了Domain属性的cookie

时间:2011-08-09 09:08:11

标签: c# cookies subdomain

我的登录方法中包含以下代码:

Response.Cookies["cookie"].Value = "...";
Response.Cookies["cookie"].Domain = "domain.com";

这样,cookie就会被放入主域和所有子域

然而,当我尝试删除cookie时:

Response.Cookies["cookie"].Expires = DateTime.Now.AddYears(-1);

它不起作用!

当我删除指定了Domain属性的2行代码时,它可以正常工作。

我该如何解决这个问题?

由于

4 个答案:

答案 0 :(得分:28)

好的,我想出来了。

当你删除一个设置了Domain属性的cookie时,你需要为新的假cookie设置相同的属性:

if (Request.Cookies["cookie"] != null)
{
    HttpCookie myCookie = new HttpCookie("cookie");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    myCookie.Domain = "domain.com"; // !!!!
    Response.Cookies.Add(myCookie);
}

答案 1 :(得分:4)

我怀疑您在Expires位于子域名时设置Response ...
Crosscheck:您可以尝试从域本身设置它,看看它是否有效吗?

根据http://msdn.microsoft.com/en-us/library/ms178195%28v=VS.100%29.aspx,您可以通过以下方式删除Cookie:

if (Request.Cookies["cookie"] != null)
{
    HttpCookie myCookie = new HttpCookie("cookie");
    myCookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(myCookie);
}

答案 2 :(得分:0)

搜索了很多,无法让它工作。 我必须实际设置value属性才能使它工作!使用mvc 3 .net 4。

        var current = HttpContext.Current.Request.Cookies[key];
        if (current == null) return;
        var myCookie = new HttpCookie(key)
                           {
                               Expires = DateTime.Now.AddYears(-1),
                               Value = current.Value,
                               Domain = domain
                           };
        HttpContext.Current.Response.Cookies.Set(myCookie);

答案 3 :(得分:0)

需要使用空字符串设置域和值。没有价值就行不通。

        var cookie = new HttpCookie(cookieName, string.Empty)
        {
            Expires = DateTime.Now.AddYears(-1),
            Domain = {YourDomain}
        };

        Response.Cookies.Add(cookie);