Biorąc tytuł pytania OP jako usunięcie wszystkich plików cookie - „Usuń pliki cookie ze strony internetowej”
Gdzieś w sieci natknąłem się na kod od Dave'a Domagali. Edytowałem Dave'a, aby zezwolić również na pliki cookie Google Analytics - które zapętlały wszystkie pliki cookie znalezione w witrynie i usuwały je wszystkie. (Z punktu widzenia programisty - aktualizacja nowego kodu do istniejącej witryny jest miłym akcentem, aby uniknąć problemów z ponownym odwiedzaniem witryny przez użytkowników).
Poniższy kod używam w tandemie z najpierw odczytywaniem ciasteczek, trzymaniem wszelkich wymaganych danych - a następnie resetowaniem ciasteczek po wyczyszczeniu wszystkiego za pomocą poniższej pętli.
Kod:
int limit = Request.Cookies.Count;
HttpCookie aCookie;
string cookieName;
for(int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Value = "";
aCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(aCookie);
}
Dodatek: jeśli korzystasz z Google Analytics
Powyższe zapętlenie / usunięcie spowoduje usunięcie WSZYSTKICH ciasteczek ze strony, więc jeśli korzystasz z Google Analytics - prawdopodobnie przydałoby się zachować plik cookie __utmz, ponieważ ten śledzi, skąd przybył odwiedzający, z jakiej wyszukiwarki korzystała, co kliknięto łącze, jakie słowo kluczowe zostało użyte i gdzie się znajdowały na świecie, kiedy uzyskano dostęp do Twojej witryny.
Aby to zachować, zawiń proste oświadczenie if, gdy znana będzie nazwa pliku cookie:
...
aCookie = new HttpCookie(cookieName);
if (aCookie.Name != "__utmz")
{
aCookie.Value = "";
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);
}
Session.Abandon
wyczyści plik cookie sesji ASP.NET, ale nie pliki cookie ustawione ręcznie, takie jak identyfikator użytkownika tutaj. ICookies["whatever"]
nigdy nie jest nieważne; framework utworzy plik cookie, jeśli poprosisz o nieistniejący plik.