2011-03-16 4 views
0

webservice가 실행 중이고 해당 메서드 중 하나가 호출 될 때 즉시 반환되지 않습니다. 데이터가있을 때 반환됩니다. 일단 리턴하면 클라이언트는 서비스를 다시 호출하여 서비스에 데이터가있을 때마다 클라이언트에 데이터가 제공됩니다. 이것은 폴링을 피하기위한 것입니다. 하지만 문제는, 에뮬레이터에서 잘 작동하는 반면에 webservie는 반환하지 않지만 클라이언트는 null 예외에서 함수를 얻는 것보다 아래에서 끝납니다.webservice-Async call

이것은 데이터를 가지고있을 때를 반환하는 비동기 함수를 호출하는 방법입니다. 그렇지 않으면 반환되지 않습니다.

client.getstatusCompleted += new EventHandler<getstatusCompletedEventArgs>(updatereceived); 

client.getstatusAsync();//this returns only when it has data 

특정 시간이 지나면 장치가 열려있는 연결을 종료하고 클라이언트가 Endgetstatus 기능을 강제로 호출합니까? 일분 클라이언트가 웹 서비스는 반환하지 않습니다하지만 인수는 null 예외의 결과로

public string Endgetstatus(System.IAsyncResult result) { 

에 종료 후에 나는 23시간

BasicHttpBinding binding= new System.ServiceModel.BasicHttpBinding(); 
TimeSpan interval = new TimeSpan(23, 14, 18); 
binding.ReceiveTimeout = interval; 
binding.SendTimeout = interval; 

에 시간 제한을 설정했습니다.

누구든지 내가 에뮬레이터에서 제대로 작동하므로 장치에서 작업 할 때 무엇을해야하는지 알려 줄 수 있습니까?

이 윈도우 폰 7과 실버의 C#

답변

0

에 대해 나는 1 분 후, 기본적으로 웹 클라이언트가 시간이 초과 것으로 예상 있습니다.
에뮬레이터와 장치 동작의 차이점은 플랫폼 뿐이며 다른 방식으로 타이밍을 잡을 때입니다.

Yoy는 Raw 토스트 알림을 고려하여 응용 프로그램에 요청할 새로운 데이터가 있음을 알리면 장치에서 폴링하지 않아도됩니다.

+0

에뮬레이터와 장치 사이의 동작에는 차이가 없습니다. 처음에는 푸시 알림을 사용했지만 매우 불안정하고이를 사용하여 내 솔루션이 작동한다는 것을 확인할 수 없었습니다. 그게 내가 클라이언트가 webservice에서 메서드를 호출하고 그것이 데이터가있을 때만 반환이 아키텍처로 옮긴 이유. – user641247

+0

@ user641247 네트워크 추적 또는 유사한 (어쩌면 Fiddler 또는 WireShark)을 실행 해 보았습니까? –