2013-08-30 38 views
8

bir kurabiye var olmadığını belirlemek için çalışıyordu ve bu kodla süresi olsaydı: gözyaşı ve ter uzun saatler sonra ancakBir çerez olup olmadığını nasıl kontrol edersiniz?

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

bu hat aslında boş bir çerez oluşturarak veya üzerine yazılmasını olduğunu fark ettim mevcut çerez ve değeri boş ve ben TÜM çerezleri okuyup Bu optimum görünmüyor yerine

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

böyle bir maç arayan yaparak bu çözüldü 0.

sona, ben bulmakİlk denememin bir çerez oluşturması garipti. Çerezlere iyi bir açıklama yapan var mı?

cevap

16

Response.Cookies kullanıyorsunuz. Bu yanlış - tarayıcıya GERİ gönderilen çerezlerdir.

mevcut çerezleri okumak için, Request.Cookies bakmak gerekir:

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

Biz bir düğmeyi tıkladıktan sonra bir çerez oluşturulan bir işlevi vardı. Daha sonra, bu çerezin Page_PreRender sırasında varlığını kontrol etmek istedik. O zamana kadar çerez henüz istekte değil, çünkü yeni çerezle bir cevap göndermedik. Bu nedenle, önce Tepki'de çerezi arayan bir özellik oluşturduk ve orada hiçbir şey yoksa İstekte bulunmuştuk. – Cammy

+1

Gerçekten kafa karıştırıcı olan, kullandığım ilk if-bloğun her zaman bir tanımlama bilgisi döndürmesiydi (bazen boş, yanıtın varolan bir çerezi almaya çalıştığı için otomatik olarak oluşturuyordu). – Cammy

İlgili konular