2013-08-30 7 views
8

나는 쿠키가 존재하는지 확인하려고했다 그리고이 코드 만료 된 경우 : 눈물과 땀의 긴 시간 후에 그러나쿠키가 있는지 확인하는 가장 좋은 방법은 무엇입니까?

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

나는이 라인은 실제로 빈 쿠키를 만들거나 덮어 쓰기를 한 것으로 나타났습니다 기존의 쿠키와 그 값은 공백 내가 모든 쿠키를 읽고이 최적하지 않는 것 대신

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

같은 경기를 찾는 수행하여이 문제를 해결 0

만료, 나는 찾을 수그게 내 처음 시도가 쿠키를 만든 이상한거야. 누구든지 쿠키에 대한 좋은 설명이 있습니까?

답변

16

Response.Cookies을 사용하고 있습니다. 그건 틀렸어. 쿠키는 브라우저에 다시 보내진다.

기존 쿠키를 읽으려면 Request.Cookies 볼 필요가 :

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

우리가 버튼을 클릭 한 후 쿠키를 생성하는 기능을 가지고 있었다. 그런 다음 Page_PreRender 동안 쿠키의 존재 여부를 확인하려고했습니다. 그때까지는 쿠키가 요청에 포함되어 있지 않습니다. 왜냐하면 우리가 새로운 쿠키로 응답을 보내지 않았기 때문입니다. 따라서 우리는 먼저 응답에서 쿠키를 찾은 다음 요청에 아무 것도없는 속성을 만들었습니다. – Cammy

+1

정말 혼란 스러웠던 것은 처음 사용하는 if-block이 항상 쿠키를 반환한다는 것입니다 (Response에서 존재하지 않는 쿠키를 얻으려고하면 자동으로 생성되기 때문에 때때로 비어 있음). – Cammy

관련 문제