Cookie没有删除

时间:2013-01-14 21:12:33

标签: c# cookies visual-studio-2012 devexpress

System.Web.UI.Page oPageMy cookie未删除。我看了几篇文章,一切看起来都很棒,就在我单步浏览Visual Studio(或者只是在localhost下运行)时,点击按钮,我的cookie就停留了。

无论价值多少,我都在使用Visual Studio 2012和.Net 4.0。我正在使用默认IE(在Win7 / 64上使用所有最新更新的v9)在localhost上进行调试。

public static void LoginUser(String strEmail, int iId, int iKeepDays)
{
    HttpCookie oCookie = new HttpCookie("myCookie");

    // Set the cookie value.
    oCookie.Secure = false;
    oCookie["Id"] = iId.ToString();
    oCookie["Email"] = strEmail;
    oCookie.Expires = DateTime.Now.AddDays(iKeepDays);

    // Add the cookie.
    HttpContext.Current.Response.Cookies.Add(oCookie);
}

public static void LogoutUser(System.Web.UI.Page oPage)
{
    // Get the cookie.
    HttpCookie oCookie = new HttpCookie("myCookie");
    oCookie = HttpContext.Current.Request.Cookies["myCookie"];
    if (null != oCookie)
    {
        // Remove the cookie.
        cCookies.RemoveCookie("myCookie");

        // Go back to the home page.
        if (oPage.IsCallback)
            ASPxWebControl.RedirectOnCallback("/");
        else
            HttpContext.Current.Response.Redirect("/");
    }
}

/// <summary>
/// This function will be used to remove cookies value 
/// </summary>
/// <param name="key"></param>
public static void RemoveCookie(String key)
{
    //get cookies value 
    HttpCookie oCookie = null;

    if (null != HttpContext.Current.Request.Cookies[key])
    {
        oCookie = HttpContext.Current.Request.Cookies[key];

        // You cannt directly delte cookie you should set its expiry date to earlier date 
        oCookie.Expires = DateTime.Now.AddDays(-1);
        HttpContext.Current.Response.Cookies.Add(oCookie);
    }
}

2 个答案:

答案 0 :(得分:1)

现在答案似乎很明显,我正在写它并想出来,但我可以说答案并不容易,明显与否。

上面的代码在服务器上执行,但cookie的删除发生在客户端上。执行必须转移到客户端,然后返回到服务器,以便服务器识别cookie被删除。

我正在同一个退出调用中回读数据,只是在一个不同的函数中。由于接受的练习声明重置cookie,该函数将cookie写回。 cookie被删除然后又回来了。它甚至有一个新的文件名。 (我打开了隐藏的cookie文件夹。)

我的解决方案是将登录状态传递给其他函数。这解决了cookie部分。

答案 1 :(得分:0)

cCookies.RemoveCookie("myCookie");行不会调用您的RemoveCookie方法。该行应为RemoveCookie("myCookie");