2011-08-09 11 views
9

Mam następujący kod w moim metoda logowania:C#/ASP.NET: nie można usunąć ciasteczka z własności domeny określonej

Response.Cookies["cookie"].Value = "..."; 
Response.Cookies["cookie"].Domain = "domain.com"; 

ten sposób plik cookie jest umieszczona w domenie głównej i wszystkich subdomenach

jednak gdy próbuję usunąć ciasteczka:

Response.Cookies["cookie"].Expires = DateTime.Now.AddYears(-1); 

To nie działa!

Po usunięciu 2 wiersza kodu, w którym określono właściwość Domena, działa poprawnie.

Jak mogę rozwiązać ten problem?

Dzięki

+0

Ktoś? Walczyłem z tym na zawsze ... – Alex

Odpowiedz

24

Dobra, pomyślałem, że na zewnątrz.

Po usunięciu plików cookie z domeną zestawu właściwości, należy ustawić tę samą właściwość dla nowej fałszywej cookies:

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    myCookie.Domain = "domain.com"; // !!!! 
    Response.Cookies.Add(myCookie); 
} 
+1

Dzięki za podzielenie się swoją odpowiedzią Alex. Pomogło mi to sparować – DotNetInfo

4

Podejrzewam ustawiania Expires natomiast Response jest na subdomenie ...
Crosscheck: można spróbować ustawić go z domeny sama i sprawdzić, czy to działa?

Według http://msdn.microsoft.com/en-us/library/ms178195%28v=VS.100%29.aspx można usunąć plik cookie przez:

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

Dziękuję za odpowiedź. Ustawiam ciasteczka z samej domeny. Próbowałem tego samego przykładu i działa tylko w Operze. – Alex

+0

Dzięki za zapewnienie właściwego rozwiązania. –

0

Szukano wokół całkiem sporo i nie mógł dostać się do pracy. Musiałem ustawić wartość właściwości, aby działała! Używanie mvc 3 .net 4.

 var current = HttpContext.Current.Request.Cookies[key]; 
     if (current == null) return; 
     var myCookie = new HttpCookie(key) 
          { 
           Expires = DateTime.Now.AddYears(-1), 
           Value = current.Value, 
           Domain = domain 
          }; 
     HttpContext.Current.Response.Cookies.Set(myCookie); 
Powiązane problemy