2012-04-10 5 views
1

Ich habe eine logout.aspx, die aufgerufen wird, wenn der Benutzer auf Abmelden klickt und es gibt, wo ich die Cookies löschen möchte, aber es wird es einfach nicht tun ...Kann nicht löschen cookie in ASP.NET C#

public partial class LogoutUser : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     HttpCookie cookie; 

     cookie = Request.Cookies.Get("Basket"); 
     if (cookie == null) 
     { 
      cookie = new HttpCookie("Basket"); 
     } 

     foreach (string item in cookie.Values.AllKeys) 
     { 
      Response.Cookies[item].Expires = DateTime.Now.AddDays(-1);     
     } 

     cookie.Expires = DateTime.Now.AddDays(-1d); 
     Response.Cookies["Basket"].Expires = DateTime.Now.AddYears(-1);  
     Session.Abandon(); 

     Response.Redirect("~/Default.aspx"); 
    } 
} 

die Cookie speichert die Werte in den Korb, aber nachdem ich noch abzumelden den Korb zugreifen kann, weiß ich nicht, was falsch ist.

Antwort

1

Könnte es das sein?

Sitzungsbezeichner für abgebrochene oder abgelaufene Sitzungen werden standardmäßig wiederhergestellt. Das heißt, wenn eine Anfrage gestellt wird, die den Sitzungsidentifizierer für eine abgelaufene oder abgelaufene Sitzung enthält, wird eine neue Sitzung unter Verwendung derselben Sitzungskennung gestartet. Sie können dies deaktivieren, indem Sie das Attribut regenerateExpiredSessionId des Konfigurationselements sessionState auf true setzen. Weitere Informationen finden Sie unter Sitzungs-IDs.

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

5

Here is some relevant documentation.

Ich glaube, Ihre Fehler in dieser Zeile ist:

if (cookie == null) 

Sie sind für null Kontrolle, anstatt für nicht null zu überprüfen. Somit sollte

HttpCookie cookie; 

    cookie = Request.Cookies.Get("Basket"); 
    if (cookie != null) 
    { 
     cookie = new HttpCookie("Basket"); 
     cookie.Expires = DateTime.Now.AddDays(-1); 
     Response.Cookies.Add(cookie); 
    } 

    Response.Redirect("~/Default.aspx"); 

sollte der Trick tun.

Hoffe, das ist hilfreich.