2011-02-26 3 views
2

FaultException을 throw 할 수있는 wcf 서비스를 호출하고 싶습니다. 그러나이를 비동기 적으로 수행하려고합니다. 모든 것이 정상이면 아무 예외도 반환하지 않지만 서비스가 내 FaultExceptions 중 하나를 throw하면 클라이언트에서 CommunicationObjectFaultedException이 발생하고 해당 속성 중 원래 FaultException이 포함되지 않습니다.비동기 WCF 호출에서 FaultExceptions를 잡는 방법은 무엇입니까?

지금까지 내가 배울 수있는 것부터이 정보는 다른 곳에 저장됩니다.. 아무도 말해 줄 수 어디 정확히 무엇입니까?

예를 들어이 두 사용자의 등록 처리 :

internal void CallRegisterUser() 
{ 
    _service.RegisterUserAsync("username", "pass"); 
} 

void _service_RegisterUserCompleted(object sender, RegisterUserCompletedEventArgs e) 
{ 
    if (e.Error != null) { MessageBox.Show(e.Error.Message); } 
} 
+0

당신이 코드를 보여줄 수 서비스를 호출하고 예외를 잡는 데 사용하고 있습니까? –

+0

나는이 동일한 문제를 가지고 있습니다. 해결책을 찾았습니까? – mservidio

답변

1

아주 간략 예를 들어, 그러나 이것은 당신이 당신의 사용자 정의 오류 정보를 얻을 것입니다 방법입니다

void client_RegisterUserCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
      if (e.Error is FaultException<UserRegistrationFault>) 
      { 
       UserRegistrationFault fault = (e.Error as FaultException<UserRegistrationFault>).Detail; 
       MessageBox.Show("Error: " + fault.TheExceptionMessage); 
      } 
      else 
      { 
       MessageBox.Show("Error: " + e.Error.ToString()); 
      } 
     }    
    } 
+0

예, FaultException이 발생하는 경우입니다. 하지만 내부 오류가없는 CommunicationObjectFaultedException은 오류가 있음을 나타냅니다. 아무것도 더. 그리고 나는 그것을 FaultException으로 던질 수 없다. – Tenshiko

+0

고객은 어떤 종류의 응용 프로그램입니까? WPF? Windows Forms? 실버 라이트? –

+0

또한보십시오 [여기에서] http://msdn.microsoft.com/en-us/library/system.servicemodel.communicationobjectfaultedexception.aspx. 프록시 객체를 더 이상 사용할 수 없으면 CommunicationObjectFaultedException이 발생합니다. CallRegisterUser 메서드가 호출 될 때마다 서비스 프록시 (_service)의 새 인스턴스를 만드는 경우에도이 문제가 발생합니까? –

관련 문제