2012-03-13 2 views
0

REST를 사용하여 웹 서비스에서 친구에게 전화하는 개체의 목록을 가져 오는 Windows Phone 프로젝트가 있습니다. 전체 연결 부분이 처음에는 잘 작동하고 두 번째에는 실패합니다. 나는 심지어 데이터베이스에서 값을 변경하는 방법에서 동일한 값을 얻을. 다음은 그 예입니다.Windows Phone REST 통화 문제

  • 사용자는 페이지
  • 오른쪽 값을 수동으로
  • 사용자가 다시 페이지로 이동
  • 내가 데이터베이스에서 값을 변경 WCF 서비스와 방법을 사용하여 데이터베이스에서 페치로 이동 데이터 가져 오기가 다시 시작되지만 웹 서비스에서 데이터를 처음 가져온 것과 동일한 결과를 얻습니다.

아이디어가 있으십니까?

코드 :

내가 fiddler2 운영과 에뮬레이터에서이 작업을 실행하는 것
HttpWebRequest request; 

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     UpdateData(); 
    } 

    public void UpdateData() 
    { 
     ((App)App.Current).ShowProgressBar(); 
     string uri = App.SERVICE_URI + "/GetFriends?userid=" + App.CurrentUserId; 
     request = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri)); 
     request.BeginGetResponse(new AsyncCallback(GetFriendsReadCallback), request); 
    } 

    private void GetFriendsReadCallback(IAsyncResult asynchronousResult) 
    { 
     List<Friend> friends; 
     HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; 
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult); 
     using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream())) 
     { 
      string resultString = streamReader1.ReadToEnd(); 
      var ser = new DataContractJsonSerializer(typeof(List<Friend>)); 
      var stream = new MemoryStream(Encoding.Unicode.GetBytes(resultString)); 
      DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Friend>)); 
      friends = (List<Friend>)jsonSerializer.ReadObject(stream); 
     } 
+0

가능한 중복 http://stackoverflow.com/questions/9668884/webclient-in-a-wp7- 1-app-called-once once) – Robaticus

답변

3

대개 캐싱 문제가 발생합니다. 이 서비스 코드에 액세스 할 수없는 경우

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

, 당신이 (당신의 요청 URL의 끝에 변화 더미 매개 변수를 추가 예 : GUID 또는 DateTime.Now 수 : 어느 캐싱을 사용하지 않도록 REST 서비스를 변경 .Ticks). 여기에 내 대답은 밖으로

확인 : WebClient in a WP7.1 app called only once

[한 번만라는 WP7.1 응용 프로그램에서 웹 클라이언트 (의
1

- 정답 인 경우 호출이 두 번째로 이루어지고 있는지 확인하기 위해 HTTP를 통한을 전송되는 어떤 ID를 확인하고, 돌려 보내지. 문제가 클라이언트 또는 서버 측인지 여부를 알게되면 중단 점을 사용하여 디버깅을 시작합니다. 잘못된 값이 처음으로 선택됩니다.

+0

다른 REST WCF 테스트 클라이언트를 사용하여 웹 서비스를 테스트 한 결과 시도 사이의 값을 변경하더라도 매력을 느꼈습니다. – parek