2011-03-08 9 views
0

비동기식 HttpWebRequest를 만들고 있는데 실패하면 백업 웹 서비스를 호출하려고합니다. 좋아요 :HttpWebRequest 예외 처리

public void CallService1() 
{ 
    HttpWebRequest request = HttpWebRequest.Create("http://MyFirstWebService") 
    request.BeginGetResponse(this.CallService1Completed, request); 
} 

public void CallService1Completed(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 

    try 
    { 
     using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result)) 
     { 
      using (Stream responseStream = response.GetResponseStream()) 
      { 
       // Use Data 
      } 
     } 
    } 
    catch (WebException webException) 
    { 
     if (?????) 
     { 
      CallBackupService2(); 
     } 
    } 
} 

항상 인터넷에 연결되어 있지 않은 모바일 응용 프로그램입니다. 인터넷에 연결되어 있지 않으면 백업 서비스를 원하지 않습니다. 어떤 이유로 든 첫 번째 서비스가 중단 된 경우에만 백업 서비스를 호출하려고합니다. 위의 'IF'문구에 무엇을 넣을 것입니까?

답변

0

그것은 다음과 같이 구현 될 수있다 : 나는 그것을 알고있는 것처럼

if (NetworkInterface.GetIsNetworkAvailable()) 
{ 
    CallBackupService2(); 
} 
+0

우리가 시도하는 것이 좋습니다되는 HttpWebRequest를 오히려이 차단 호출이기 때문에이 전화를하는 것보다. WebException을 통해이 정보를 얻을 수있는 방법이 없으면 더 빠를 것입니다. – anon

+0

WebException.Status 필드를 사용할 수도 있습니다. http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx – ShahidAzim