38

重複の可能性:
サインアウトのクリック時に Cookie を削除する

ユーザーのログアウト時に Cookie を削除したい。

これが私のコードです:

 if (HttpContext.Current.Request.Cookies["currentUser"] != null)
 {
     DeleteCookie(HttpContext.Current.Request.Cookies["currentUser"]);
 }


       public void DeleteCookie(HttpCookie httpCookie)
        {
            try
            {
                httpCookie.Value = null;
                httpCookie.Expires = DateTime.Now.AddMinutes(-20);
                HttpContext.Current.Request.Cookies.Add(httpCookie);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

しかし、うまくいきません。何か提案はありますか?

4

4 に答える 4

73
 HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies["currentUser"];
 HttpContext.Current.Response.Cookies.Remove("currentUser");
 currentUserCookie.Expires = DateTime.Now.AddDays(-10);
 currentUserCookie.Value = null;
 HttpContext.Current.Response.SetCookie(currentUserCookie);

できます。

于 2012-08-24T21:19:35.050 に答える
20

Cookie を追加する代わりに、Response'sCookieExpiresを過去の値に変更する必要があります。

if (Request.Cookies["currentUser"] != null)
{
    Response.Cookies["currentUser"].Expires = DateTime.Now.AddDays(-1);   
}

補足:代わりに、スタックトレースを保持するthrow ex必要があります。C#: カスタム例外をスローするベスト プラクティスthrow

于 2012-08-24T20:56:59.703 に答える
0

代わりに、cookie (有効期限が切れたもの) を HttpContext.Current.Response.Cookies コレクションに追加します。リクエストは、サーバーが送信した Cookie を読み取るためのものです。応答は、Cookie をクライアントに送り返すためのものです。

于 2012-08-24T20:56:10.017 に答える
-1

おそらく、Response.Cookies.Clear() または Response.Cookies.Remove() を利用できます。

于 2012-08-24T20:57:54.257 に答える