2012-06-14 4 views
1

내 국제화 된 사이트를 방문하는 사람이 언어를 변경할 수 있기를 바랍니다. 가장 좋은 방법은 쿠키에 선택된 언어를 저장하는 것이라고 생각했습니다. 따라서 페이지가로드되면 쿠키에서 기본 언어를 찾을 수 있습니다.C에서 쿠키 읽기 #

쿠키를 쓰는 것이 완벽하지만, 계속 읽기 위해 오류가 발생합니다. 저는 Visual Studio에서 저에게 던져주는 오류를 번역하는 데 어려움을 겪고있는 C# im을 처음 사용했습니다.

lang이라는 문자열에 'UserSettings'라는 쿠키 값이 필요합니다. 나는이 같은 노력하고있어 :

string lang = Request.Cookies["UserSettings"].Value; 

그것이 발생 오류 :

개체 참조가 나는 문제를 생각하고

가이 개체의 인스턴스로 설정되지 않았습니다 내가 왼쪽에있는 문자열을 초기화하고 있기 때문에 문장의 오른쪽에있다.

는 또한 모든 같이

HttpCookie cookie = Request.Cookies["UserSettings"].Value; 

하지만 비주얼 스튜디오 나던을 수행하여 쿠키의 인스턴스를 만드는 시도했다.

내가 뭘 잘못하고 있니? Request 객체의 인스턴스를 만들어야합니까? 어떤 도움을 주시면 감사하겠습니다.

이 주제에 대한 다른 자습서를 따르고 있지만 모두 동일한 오류가 발생합니다.

편집 :

HttpCookie cookie = Request.Cookies["UserSettings"]; 

하지만 행운, 그것은 여전히 ​​작동하지 않았다 나는 내가 그것을 변경

HttpCookie cookie = Request.Cookies["UserSettings"].Value; 

했다 나타났습니다.

편집 :이 내 쿠키가

public void Application_BeginRequest() 
    { 
     myCookie = new HttpCookie("UserSettings"); 
     myCookie.Value = "nl"; 
     myCookie.Expires = DateTime.Now.AddDays(1); 
     Response.Cookies.Add(myCookie); 
     hc = new HomeController(); 
    } 

내 쿠키 100 %, 메신저 절대적 물론, 파이어 폭스 - 웹 개발자에서 볼 수 이루어집니다 방법이다.

업데이트 :이, 지금

 public string getLang() 
    { 
     // HttpCookie aCookie = Request.Cookies["UserSettings"]; 
     // string lang = Server.HtmlEncode(aCookie.Value); 
     // if (lang != null) 
     // { 
     //  currentLanguage = lang; 
     // } 
     return currentLanguage; 
    } 

내 코드는 컴파일이 방법을 호출하고있어 정확한 코드 나는 도다 (이 방법의 첫 번째 줄 @ 오류)

답변

2

다음 내 코드의 주석을 해제하는 경우 이거해볼 수 있니?

HttpCookie aCookie = Request.Cookies["UserSettings"]; 
string lang = Server.HtmlEncode(aCookie.Value); 

http://msdn.microsoft.com/en-us/library/ms178194.aspx

편집 이 도움말을합니까? asp.net mvc can't access cookie data in base controller

+0

는 경로의 일이 될 수 있습니다

HttpCookie Userinfo= new HttpCookie("Userinfo"); Userinfo["Username"] = application.username.ToString(); Response.Cookies.Add(Userinfo); 

쿠키 값을 얻으려면 : – DeadManWalking

+0

쿠키를 어떻게 추가 하시겠습니까? – theedam

+0

내 질문에 그 정보를 추가 – DeadManWalking

0

먼저 쿠키가 생성되었는지 확인합니다.
webdeveloper를 설치 한 후 툴바가 Firefox 브라우저에 나타나고 쿠키 탭을 선택하면
쿠키 ->보기 쿠키 정보가 표시되며 쿠키 정보가있는 모든 쿠키가 표시됩니다.

+0

나는 webdeveloper 플러그인, 그리고 쿠키는 100입니다 거기 %. 경로 문제 일 수 있습니까? – DeadManWalking

+0

@DeadManWalking은 코드를 보여줍니다. 그것은 다른 문제가 될 수 있습니다 – vikrantx

4

쿠키가 설정되지 않는 것처럼 들립니다. 이 경우 당신이 확인해야합니다 여기

HttpCookie cookie = new HttpCookie("UserSettings"); 

cookie["UserSettings"] = myUserSettingsObject; 
cookie.Expires = DateTime.Now.AddYears(1); 
Response.Cookies.Add(cookie); 

좋은 기사입니다 :

HttpCookie aCookie = Request.Cookies["UserSettings"]; 
if(aCookie != null) { 
    object userSettings = aCookie.Value; 
} else { 
    //Cookie not set. 
} 

는 쿠키를 설정하려면 http://www.java2s.com/Code/ASP/Session-Cookie/CreateandretrieveCookiedataC.htm

+0

내 질문에 쿠키가 분명히있다 ..... – DeadManWalking

+0

죄송합니다. 질문이 업데이트되지 않았습니다. – jaypeagi

+2

코드의 주석 처리를 제거 할 때 발생하는 오류는 무엇입니까? 요청을 사용할 수없는 경우 쿠키를 확인하고 있습니까? – jaypeagi

0
HttpCookie myCookie = new HttpCookie("UserSettings"); 
myCookie = Request.Cookies["UserSettings"]; 
string lang = myCookie.Value.ToString(); 
0

당신은 Application_BeginRequest() 내에서 쿠키를 생성하고 결과를 Response에 추가하십시오. 클라이언트 측에서만 생성되며 응답은 이후에 후에 전송됩니다.

Request 상태의 쿠키 값을 읽는 중일 것입니다. 원래 요청 보다 먼저이 쿠키에 대한 응답이 클라이언트로 전송 되었습니까? 그러나이 수명주기 내에서이 쿠키는 Request에 포함되어 있지 않으므로 null입니다.

클라이언트가 이후에 다른 요청을 보내야합니다. 쿠키는 서버에서 사용할 수 있도록 만들어졌으며 이것이 나에게 이상적입니다.

웹 개발자 도구에서 쿠키를 볼 수있는 이유는 서버가 Response을 클라이언트에 다시 보냅니다. 그러나 쿠키가있는 새로운 요청이 클라이언트에 의해 전송되지 않는 한 현재 Request 상태에 존재하지 않습니다.

0

쿠키를 설정해보십시오. 경로 = "/";

쿠키를 추가하기 전에 , 내가 쿠키가 100 %가 알고 있기 때문에, 나는에게 같은 오류가 발생

HttpCookie reqUserinfocookies = Request.Cookies["Userinfo"]; 
if (reqUserinfocookies != null) 
{ 
string username = reqBTListcookies["username"]; 
} 
0

쿠키 값을 설정하려면 ?