2010-12-30 10 views
1

나는 "로그 아웃"버튼을 통해 로그 아웃 페이지에서 다음 C# 코드를 실행합니다. ie와 ff에서는 잘 작동하지만 크롬에서는 정상적으로 작동하지 않습니다. 문제는 크롬이 쿠키를 설정하지 않는다는 것입니다. 값이 응답 헤더에 전혀 나타나지 않습니다. 나는 그물에 유사한 문제점을 가진 몇몇보고를 읽었다 그러나 적당한 해결책은 제시되지 않았다. 어떤 도움이라도 대단히 감사 할 것입니다. 시간 내 주셔서 감사합니다. 페이지에서 실행되는 코드는 다음과 같습니다.Chrome 쿠키 문제

public class LogOut : ExtendedControlBase 
    { 
     void RemoveCookie(string CookieName) 
     { 
      HttpCookie myCookie = new HttpCookie(CookieName); 
      myCookie.Expires = DateTime.Now.AddDays(-100); 
      Response.Cookies.Add(myCookie); 
     } 
     protected override void OnInit(EventArgs e) 
     { 
      Session.Remove("SiteUserEmail"); 
      Session.Remove("SiteUserName"); 
      Session.Remove("siteUserId"); 
      Session.Remove("siteUserGroupId"); 
      RemoveCookie("u"); 
      Response.StatusCode = 301; 
      Response.AddHeader("Location", "/"); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
+0

질문 : 기본 제공 멤버십 공급자를 사용해야합니까? –

답변

0

내 생각에 과거에 만료 날짜를 설정했기 때문입니다. myCookie.Expires = DateTime.Now.AddDays(-100);을 (를) 삭제 해 보셨습니까? 만료일이 미래에 설정되지 않기 때문에 세션 쿠키로 간주 될 것입니다.

+0

correct.this는 크롬에만 문제가 있습니다. (즉, 만료 쿠키로 간주됩니다.) 나는 chrome.thanks를위한 대안을 다시 찾고있다. – ioannis

1

몇 가지 제안 :

정확히 일어나는 것을 볼 수 Fiddler 같은 것을 사용해보십시오. 내 생각 엔 실제로 '로그 아웃'링크가 예상대로 Chrome에서 작동하지 않습니다.

수동 쿠키 헤더를 설정하십시오 : 그들은 와이어에 정말있는 경우

Response.AddHeader("Set-Cookie", "u=; expires=Fri, 31-Dec-1999 23:59:59 GMT"); 

확인하기 위해 테스트 헤더를 설정하십시오 :

Response.AddHeader("X-Testing", "Testing"); 

참고 : 나는 그것을 시도하지 않은. Asp.Net에서 임의의 헤더를 설정할 수 있다고 가정합니다.