2012-02-09 15 views
1

私はクッキーモンスターによって食べられたような気がします。私はクッキーを削除し、彼らはすぐに戻って来る。ログアウト時に は、私はこのコードを実行します。削除しないクッキー

protected void Page_Load(object sender, EventArgs e) 
    { 
     DeleteCookie("UserId"); 
     DeleteCookie("UserName"); 

     Session.Abandon(); 
     GoToPublicHomePage(); 
    } 

    private void DeleteCookie(string name) 
    { 
     if (Request.Cookies[name] != null) 
     { 
      HttpCookie cookie = new HttpCookie(name); 
      cookie.Expires = DateTime.Now.AddDays(-1); 
      Response.Cookies.Add(cookie); 
     } 
    } 

ジャスト「GoToPublicHome()」コールの前に、私はRequest.Cookiesをチェックして、ユーザーIDとユーザー名のクッキーは応答しています。

GoToPublicHome呼び出しの直後に実行されるMy Global.asax - > Session_Startコードでは、悪いペニーのように戻ってきました。

+0

ここに2つの質問があるようです。なぜ新しいCookieが作成されるのですか?有効期限が設定されていないのはなぜですか?それが正しいか。あなたはより詳細な質問を提供できますか? – JScoobyCed

答えて

1

あなたが書いたコードは、.Netが新しいHttpCookieを作成するように指示し、「存在しない場合のみ」は作成しません。 MSDNページには、例があります: http://msdn.microsoft.com/en-us/library/system.web.httpcookie.aspx

+0

私はコードを大幅に改訂しましたが、まだ問題が発生しています。何か助けていただければ幸いです。 –

+0

ユーザーが「GoToPublicHomePage」というアクションをアクティブにすると、Cookieを設定したページと同じコンテキストになりますか? Iex .: www.example.com/login.htmlでログインをクリックし、www.example.com/private/index.htmlでログアウトをクリックします。削除するCookieの "Path"プロパティが、設定したCookieと同じパスであることを確認する必要があります – JScoobyCed

0

Response.Cookies.Remove(name)

+0

私が考えることができるあらゆるバリエーションを試してみましょう。レスポンスにはクッキーが含まれていません。私はRequest.Cookies.Removeを試みましたが、私が読んだものはすべて、それらを削除する方法として有効期限を設定することを指しています。再表示されるクッキーは有効期限がないため、ドメインクッキーの代わりにセションクッキーのように見えます。 –

関連する問題