2011-10-06 5 views
3

Je suis perdu, maintenant les choses les plus simples ne fonctionneront pas pour moi. Ok, donc si je cours ce script avec seulement Step1 - Cela retournera "NotNull" - bien!Cookies. Pourquoi ne pas ce travail?

Si je puis le courir Avec seulement l'étape 2 il devrait comme prévu retourner "Null" - bon!

Mais si je puis retirer les deux étapes 1 et 2 (après avoir retiré le cookie avec l'étape 2) Il revient à "NotNull" - Baad!

Comment cela peut-il être? Comment puis-je vérifier si un cookie est nul!

Espoir vous pouvez aider :)

 //Step 1 
     HttpContext.Response.Cookies.Add(new HttpCookie("test") { Name = "test", Expires = DateTime.Now.AddDays(2) }); 

     //Stem 2 
     HttpContext.Request.Cookies["test"].Expires = DateTime.Now.AddDays(-2); 
     HttpContext.Request.Cookies.Remove("test"); 
     HttpContext.Request.Cookies.Clear(); 


     string test = "Null"; 

     if (HttpContext.Request.Cookies["test"] != null) 
     { 
      test = "NotNull"; 
     } 

     return Content(test); 

Répondre

3

Dans la deuxième étape que vous essayez de modifier les cookies, mais vous travaillez encore avec l'objet Request. Pour soumettre vos modifications, vous avez besoin de l'objet Response. Donc, après votre deuxième étape, les cookies sont toujours vivants.

//Stem 2 
    HttpContext.Response.Cookies["test"].Expires = DateTime.Now.AddDays(-2); 
    HttpContext.Response.Cookies.Remove("test"); 
    HttpContext.Response.Cookies.Clear(); 
+0

Désolé, cela n'a pas fonctionné. Si j'utilise Response à l'étape 2, il ne renvoie jamais Null. – BjarkeCK

+0

Appelez-vous l'étape 2 et archivez-vous une seule publication? Si c'est le cas, cela ne fonctionnera pas, car vous n'avez pas modifié la collection de cookies du navigateur. – Samich

+0

J'ai rafraîchi la page plusieurs fois. – BjarkeCK

0

Effacer le cookie du Request et Response ne supprimera pas le cookie du client. Pour supprimer vraiment le cookie, vous devez définir l'expiration du cookie à une date dans le passé et ajoutez-le à la réponse afin qu'elle expirera sur le client:

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

Ou, tout simplement:

HttpContext.Response.Cookies.Add(new HttpCookie("test") { Name = "test", Expires = DateTime.Now.AddDays(-1d) }); 
+0

D'accord, cela a du sens, mais cela ne marche toujours pas:/Il ne sera pas Null. Après l'exécution de votre code, il exécute toujours "NotNull" – BjarkeCK

+0

Après avoir supprimé le cookie par exemple, est-ce qu'il affiche "NotNull" lors d'une requête ultérieure? – RoccoC5

+0

Oui, ça revient non nul, je construis et rafraichis plusieurs fois. – BjarkeCK

Questions connexes