2013-08-30 17 views
8

Ich habe versucht, zu bestimmen, ob ein Cookie existierte, und wenn es mit diesem Code abgelaufen war:Wie überprüfe ich am besten, ob ein Cookie existiert?

if(HttpContext.Current.Response.Cookies["CookieName"]){ 
    Do stuff; 
} 

Doch nach langen Stunden der Tränen und Schweiß bemerkte ich, dass diese Linie tatsächlich wurde ein leeres Cookie oder Überschreiben der Erstellung der bestehenden Cookie und seinen Wert zu leer und verfallen bei 0.

ich löste dies durch alle Cookies und suchen nach einem Spiel zu sehen wie das zu tun Lesen statt

if (context.Response.Cookies.AllKeys.Contains("CookieName")) 
     { 
      Do stuff; 
     } 

Das ist nicht optimal scheint, und ich finde, Es ist seltsam, dass mein erster Versuch einen Cookie erstellt hat. Hat jemand eine gute Erklärung zu Cookie?

Antwort

16

Sie verwenden Response.Cookies. Das ist falsch - das sind die Cookies, die zurück an den Browser gesendet werden.

vorhandene Cookies lesen zu können, müssen Sie bei Request.Cookies aussehen:

if (context.Request.Cookies["CookieName"] != null) 
{ 
    //Do stuff; 
} 
+0

wir eine Funktion hatte, die ein Cookie erstellt, nachdem eine Schaltfläche klicken. Dann wollten wir die Existenz dieses Cookies während Page_PreRender überprüfen. Bis dahin ist der Cookie noch nicht in der Anfrage enthalten, da wir keine Antwort mit dem neuen Cookie gesendet haben. Daher haben wir eine Eigenschaft erstellt, die zuerst in der Antwort nach dem Cookie gesucht hat, und dann, wenn dort nichts war, in der Anfrage. – Cammy

+1

Was wirklich verwirrend war, war, dass der erste if-Block, den ich verwendete, immer einen Cookie zurückgab (manchmal leer, da der Versuch, ein nicht existierendes Cookie von der Antwort zu erhalten, es automatisch erzeugt). – Cammy

Verwandte Themen