2008-10-16 8 views
14

내가 쿠키를 설정하는 다음 코드가 가치를 잃게된다. 쿠키가 존재합니다. 다음을 확인하면 절대로 지나칠 수 없습니다.쿠키 ASP.net

  if (Request.Cookies["localization"] != null && !string.IsNullOrEmpty(Request.Cookies["localization"].Value)) 

Help?

+0

사용 LiveHttpHeaders 일을하고

Private Sub SetPageSize(ByVal pageSize As Integer) ' Set cookie value to pageSize Dim pageSizeCookie As HttpCookie = New HttpCookie(pageSizeCookieName) With pageSizeCookie .Expires = Now.AddYears(100) .Value = pageSize.ToString End With ' Add to response to save it Me.Response.Cookies.Add(pageSizeCookie) ' Add to request so available for postback Me.Request.Cookies.Remove(pageSizeCookieName) Me.Request.Cookies.Add(pageSizeCookie) End Sub 

Request.Cookies.Remove 및 Request.Cookies.Add 라인

을하고 결국 브라우저. http s : //addons.mozilla.org/en-US/firefox/addon/3829 –

+0

질문에 대한 답변을 수락하는 것을 잊지 마십시오 –

답변

41

포스트가 게시 된 후에 확인이 끝났습니까? 그렇다면 요청 컬렉션에서 쿠키를 읽어야합니다.

쿠키는 Response.Cookies에 추가하여 브라우저에 유지되고 Request.Cookies에서 다시 읽습니다.

응답에 추가 된 쿠키는 페이지가 동일한 요청에있는 경우에만 읽을 수 있습니다.

+0

Response.Cookies가 값을 제거하는 이유는 모르지만 고마워요. 날 구해 줬어. –

0

"응답"모음 대신 "요청"모음에 지치셨습니까?

 
if (Request.Cookies["localization"] != null && !string.IsNullOrEmpty(Request.Cookies["localization"].Value)) 
-1

사용 Response.Cookies.Add (cookie); 대신 Response.Cookies.Set (쿠키);

0

이 조각을 시도 -

string locale = ((DropDownList)this.LoginUser.FindControl("locale")) 
                .SelectedValue; 
HttpCookie myCookie = new HttpCookie("localization"); 
Response.Cookies.Add(myCookie); 
myCookie.Values.Add("locale", locale); 
Response.Cookies["localization"].Expires = DateTime.Now.AddYears(1); 

& 그것을 읽고 -

if (Request.Cookies["localization"] != null) 
{ 
    HttpCookie cookie = Request.Cookies["localization"]; 
    string locale = cookie.Values["locale"].ToString(); 
} 
0

를 디버그 모드에서 컴파일하는 경우, 해당 페이지에 대한 추적을 켜고 쿠키가 있는지 확인 요청 컬렉션 aspx 파일의 @page 지시문에 추적을 설정하십시오.

0

비슷한 문제가있어서 포스트 백에서 쿠키를 읽을 수 없습니다. 저를위한 문제점은 진실한에 쿠키의 Secure 재산을 검사했다이었다. 쿠키의 보안 속성이 켜져 있으면 연결에서 SSL (Secure Sockets Layer)을 사용하는 경우에만 쿠키가 전송됩니다. 그러나 처음에는 브라우저에서 쿠키를 볼 수 있었지만 SSL을 통해 전송하지 않았다는 것을 고려하면 포스트 백에는 표시되지 않았습니다. 어쨌든, 쿠키를 돌리는 것은 확실합니다. 거짓으로, 문제를 해결하고, 쿠키를 포스트 백으로 읽게했습니다.

죄송합니다. 문제를 해결할 필요가 없으면이 문제를 해결하는 방법을 찾아 보았 기 때문에이 문제를 공유하고 싶습니다. 당신이 쿠키 사용하여 응답 개체의 존재보다는 Reqest을 확인하려고하면

17

가장 가능성있는 대답은 this post

에 볼, ASP.net 자동으로 쿠키를 만듭니다.

편집 :가 참고로, 나는 그들의 쿠키 API에 ASP.NET 악몽을 만드는 쿠키의 존재를 확인하기 위해 필요한 소프트웨어를 작성 끝났다. 요청에서 쿠키를 가져와 내 상태 개체를 만드는 변환 프로세스를 작성했습니다. 요청이 끝나면 내 상태 객체를 쿠키로 변환하고 응답 (필요한 경우)에 채 웁니다. 이렇게하면 쿠키가 응답에 있는지 여부를 알아 내고 대신 업데이트하여 무의미한 쿠키 생성을 피할 수 있습니다.

+1

나는 방금 쿠키를 읽는 Response 객체를 사용하여 쿠키를 지우는 중학교 실수를했다! 이것은 도움이되었습니다. 감사. – kstubs

1

나는 그 대답을 알고 있다고 생각합니다.

<form> 태그의 작업 속성을 삭제하십시오. <form id="form1" runat="server">

을 대신의 :

는이처럼 보이게 <form id="form1" action="DisplayName.aspx" runat="server">

그런 다음 코드에서 Response.Redirect("DisplayName.aspx");를 사용해야합니다.

0

크리스 Marisic의 대답에 주석으로이를 추가 할 수 있지만이 또한 크리스는 요청에서 쿠키를 제거하는 방법에 대한 자신의 편집에 말에

:-(그 privelage을하지 마십시오을 읽을 수 있도록 포스트 백에서 새로 만든 쿠키 값이 나는 쿠키가 반환되고 있는지 여부를 확인하는 포스트 백에