2017-08-31 7 views
0

cookiesのすべてを期限切れにする次のコードを書きました。requestです。しかし、それらを期限切れにすると、私はcookiesのいくつかのためにdomainプロパティを明示的に設定する必要があります。同じことを行うには良い方法がある場合、私は私だけcookiesの選択listdomain値を設定するために、他のより良い方法がある場合はC#そうに新しいことを確認していない...クッキーの有効期限コードの最適化

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session.Abandon(); 
    HttpCookie cookie; 
    string cookieName; 
    int cookieCount = Request.Cookies.Count; 

    for (int i = 0; i < cookieCount; i++) 
    { 
    cookieName = Request.Cookies[i].Name; 
    cookie = new HttpCookie(cookieName); 
    cookie.Expires = DateTime.Now.AddDays(-1); 

    if (string.Compare(cookieName, "cookie1") == 0 
     || string.Compare(cookieName, "cookie2") == 0 
     || string.Compare(cookieName, "cookie3") == 0 
     || string.Compare(cookieName, "cookie4") == 0) 
    { 
     cookie.Domain = ".mydomain.com"; 
    } 

    Response.Cookies.Add(cookie); 
    } 

    Response.Redirect("my redirect link"); 
} 

を思っていました。私は基本的にtclから、スクリプトの背景から来ました、与えられた項目がリストにあるか気に入らない場合は、通常、私は単純にそこにチェックすることができます。

if ($item in $list){ 
    // Do something 
} 

lsearchを実行に似ています。

将来的に私は同じアクションを実行するためにlistcookiesより多くを持っているかもしれないと私はif条件チェックを詰め維持したくないので、とにかく、私はifで論理演算子を好きではない理由があります。

は、私はおそらくlistの各cookie名のforループチェックして、すべてのCookie名のlistとを持っているように、ここでtclと同じ操作を行うが、それがどのように高価なことを確認することはできません。

コメントをいただければ幸いです。

+0

ここをクリックしてください:https://stackoverflow.com/questions/31833109/remove-and-delete-all-cookies-of-my-asp-net-c-sharp-applicationレスポンスのCookieを更新するだけです。あなたはクッキーを更新せず、新しいクッキーを作成します。 – Niels

+1

クッキーが多すぎるとメンテナンスが難しいです。 ASP.NETには、ページ間でデータを永続化するための他のメカニズムがあります。あなたが達成しようとしていることを教えてもらえれば、より良い解決策を提案することができます。 – Win

+0

私は同じドメインにある私のサイトのための単一のログアウトページを作成しようとしています。だから私はすべてのクッキー、基本的に私のセッションのクッキーを削除しようとしていたので、ユーザーが任意のサイトからログアウトすると、彼/彼女は他のすべてのサブサイトからログアウトされます。 – Naphstor

答えて

0

new HttpCookieを使用して新しいクッキーを作成します。そのため、既存のCookieのドメインはコピーされません。既存のCookieを更新する方がよいでしょう。上記のURLから以下のコードをコピーしRemove and delete all cookies of my ASP NET c-sharp application

:で、たとえば

foreach (string key in Request.Cookies.AllKeys) 
{ 
    HttpCookie c = Request.Cookies(key); 
    c.Expires = Now.AddMonths(-1); 
    Response.AppendCookie(c); 
} 

あなたは過去の日付に日付を満了し設定することにより、クッキーを無効にすることができます。

+0

あなたが提案したのと同じことを試みましたが、応答のクッキーを見ると、ドメインの値がnullと表示されます。 – Naphstor

関連する問題