1

我有一个添加到响应中的 cookie,但是如果已经存在具有相同密钥的 cookie,我想将其删除,否则我最终会得到 2 个相同密钥的 cookie。

我想通过简单地使 cookie 过期,它会从浏览器中删除它吗?

HttpCookie cookie = new HttpCookie("UserCookie");
cookie.Value = encTicket;

if (HttpContext.Current.Request.Cookies["UserCookie"] != null)
    ClearCookie("UserCookie");

HttpContext.Current.Response.Cookies.Add(cookie);


private static void ClearCookie(string key)
{
    var httpContext = new HttpContextWrapper(HttpContext.Current);
    var _response = httpContext.Response;

    HttpCookie cookie = new HttpCookie(key)
    {
        Expires = DateTime.Now.AddMonths(-1),
        Value = null
    };

    _response.Cookies.Add(cookie);
}

非常感谢任何帮助。

4

4 回答 4

3

“您不能直接删除用户计算机上的 cookie。但是,您可以通过将 cookie 的过期日期设置为过去日期来指示用户的浏览器删除 cookie。下次用户向域内的页面发出请求或设置cookie的路径,浏览器将确定cookie已过期并将其删除。”

请阅读以下文章了解更多详情。

http://msdn.microsoft.com/en-us/library/ms178195(v=vs.85).aspx

于 2013-07-15T16:37:27.123 回答
1

这是我写我的cookie的方式。

protected string CookieSession(Enums.CookieSessionTypes sessionTypes, string cookieValue = "")
    {
        string sessionId = string.Empty;

        var cookie = new HttpCookie(CookieName);

        switch (sessionTypes)
        {
            case Enums.CookieSessionTypes.Add:

                cookie.Values[SessionIdConst] = cookieValue;
                cookie.Expires = DateTime.Now.AddDays(1);
                Response.Cookies.Add(cookie);
                sessionId = cookieValue;

                break;
            case Enums.CookieSessionTypes.Delete:
                cookie.Values[SessionIdConst] = cookieValue;
                cookie.Expires = DateTime.Now.AddDays(-1);
                Response.Cookies.Add(cookie);

                break;
        }


        return sessionId;
    }

试试看,应该可以的

于 2013-07-15T16:39:22.783 回答
0

现在我只是选择集合中的最后一个 cookie 值,尽管我意识到这是一个巨大的 hack。任何更好的建议都非常欢迎。

string value = "";
for (int i = 0; i < HttpContext.Current.Request.Cookies.Count; i++)
{
    if (HttpContext.Current.Request.Cookies[i].Name == "UserCookie")
    value = HttpContext.Current.Request.Cookies[i].Value;
}
于 2013-07-16T09:19:40.697 回答
0

我的 cookie 没有正确过期,因为它设置的路径与实际路径不同,而且与 URL 的域名部分不同,cookie 路径区分大小写。解决此问题的唯一方法是在您的 Web 服务器或代码中设置一种机制,以从任何其他 URL 大小写重定向到区分大小写的规范 URL。然后您的 cookie 将重新开始工作。

于 2016-07-27T20:09:33.327 回答