1

応答に追加する Cookie がありますが、同じキーを持つ Cookie が既に存在する場合はそれを削除します。そうしないと、同じキーの 2 つの 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

1

これが私のクッキーの書き方です。

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 値を選択しているだけですが、これは大規模なハックであることはわかっています。より良い提案は大歓迎です。

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 に答える