2011-10-06 5 views
3

나는 잃어 버렸습니다. 이제 가장 간단한 것들이 저를 위해 일하지 않을 것입니다.쿠키. 왜이 일을하지 않습니까?

그래,이 스크립트를 Step1 만 실행하면 "NotNull"이 반환됩니다. - 좋습니다!

2 단계 만 실행하면 예상대로 "Null"이 반환됩니다. - 좋습니다!

하지만 1 단계와 2 단계를 모두 제거한 경우 (step2로 쿠키를 제거한 후) 다시 "NotNull"로 바뀝니다 - Baad!

어떻게 될 수 있습니까? 쿠키가 Null인지 어떻게 확인할 수 있습니까?

당신이 도움이 될 수 있습니다 희망 :

 //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); 

답변

3

를 두 번째 단계에서는 쿠키를 수정하려고하지만 여전히 Request 객체 작업. 수정을 제출하려면 Response 개체가 필요합니다. 그래서, 당신의 2 단계 쿠키가 아직 살아 있습니다. 클라이언트에서 쿠키를 제거하지 않습니다 RequestResponse에서 쿠키를 삭제

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

죄송합니다. 작동하지 않았습니다. 대신 2 단계에서 응답을 사용하면 결코 Null을 반환하지 않습니다. – BjarkeCK

+0

2 단계를 호출하고 단일 포스트 백을 체크인하고 있습니까? 그렇다면 브라우저 쿠키 수집을 변경하지 않았기 때문에 작동하지 않습니다. – Samich

+0

나는 여러 번 페이지를 새로 고쳤다. – BjarkeCK

0

. 단순히

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

을 또는 :

진정으로 쿠키를 제거하려면, 당신은 과거에 지금까지 쿠키의 만료를 설정하고 클라이언트에 만료됩니다 있도록 응답에 다시 추가해야
HttpContext.Response.Cookies.Add(new HttpCookie("test") { Name = "test", Expires = DateTime.Now.AddDays(-1d) }); 
+0

좋아요, 이해 되긴하지만 아직도 작동하지 않습니다 :/Null이되지는 않습니다. 코드를 실행 한 후에도 여전히 "NotNull"을 실행합니다. – BjarkeCK

+0

예제에 따라 쿠키를 제거한 후 후속 요청에서 "NotNull"을 인쇄합니까? – RoccoC5

+0

예, null을 반환하지 않습니다. 여러 번 빌드하고 새로 고칩니다. – BjarkeCK

관련 문제