如何在c#中从服务器端删除cookie

时间:2014-07-25 13:10:44

标签: c# asp.net asp.net-mvc-4 cookies

我有一个asp.net mvc 4项目,尝试更新我的cookie,但不是这样,它创建了另一个cookie,例如我有3个重复的cookie,名称为" page&#34 ;。有谁知道如何解决这个问题?

if (page != null && Request.Browser.Cookies) {
                if (Response.Cookies.AllKeys.Contains("page")) {
                    var aCookie = new HttpCookie("page") { Expires = DateTime.Now.AddDays(-1) };
                    Response.Cookies.Add(aCookie);
                }

                var pages = new HttpCookie("page") { Value = page.ToString(), Expires = DateTime.Now.AddDays(7) };
                Response.Cookies.Add(pages);
            }

2 个答案:

答案 0 :(得分:1)

您是否尝试在添加新Cookie之前删除Cookie。

if (page != null && Request.Browser.Cookies)
{
    Response.Cookies.Remove("page");
    var pages = new HttpCookie("page") { Value = page.ToString(), Expires = DateTime.Now.AddDays(7) };
    Response.Cookies.Add(pages);
}

请注意,如果没有页面cookie,则Response.Cookies.Remove(“page”)不会抛出异常,因此不需要测试它是否存在。

答案 1 :(得分:0)

如果要从客户端删除Cookie,则应将其设置为已过期:

if (page != null && Request.Browser.Cookies) {
    Response.Cookies.Remove("page");
    var aCookie = new HttpCookie("page") { Expires = DateTime.Now.AddDays(-1) };
    Response.Cookies.Add(aCookie);
}

但如果您只需要更新它,只需将其从响应中删除并添加新版本:

if (page != null && Request.Browser.Cookies) {
    Response.Cookies.Remove("page");
    var pages = new HttpCookie("page") { Value = page.ToString(), Expires = DateTime.Now.AddDays(7) };
    Response.Cookies.Add(pages);
}