2014-05-14 2 views
0

나는 간단한 예외 WCF 서버를 가지고 있는데, 클라이언트 측에서는 아래의 오류가있는 통신 예외 만 받는다. FaultException<InvalidOperationException>을 던지고있다.WCF 클라이언트에서 FaultException이 throw되지 않습니다. 대신 나는 통신 예외를 얻고있다

소켓 연결이 중단되었습니다. 이 메시지는 메시지가 처리 중이거나 원격 호스트가 수신 시간 초과를 초과했거나 기본 네트워크 리소스 문제로 인해 발생할 수 있습니다. 로컬 소켓 시간 초과가 '00 : 00 : 59.8080000 '입니다.

내가 갖고있는 코드는 아래를 참조하십시오. 빠진 것이 있으면 알려주세요.

서비스

[OperationContract] 
[FaultContract(typeof(InvalidOperationException))] 
bool DoWork() 

서비스 구현 코드

public bool DoWork() 
    {var invalidOperationException = 
      new InvalidOperationException(
      "Can't dowork", exception); 

     // throw InvalidOperationException as an FaultException to the service consumer. 
     throw new FaultException<InvalidOperationException>(
      invalidOperationException, 
      exception.Message, 
       new FaultCode("Test Message"), 
       "DoWork"); 
} 

클라이언트 측 코드.

try 
{ 
var service = new ServiceClient(); 
var result = service.DoWork(); 
} 
catch (TimeoutException timeoutException) 
      { 

      } 
      catch (FaultException<InvalidOperationException> invalidOperationException) 
      { 

      } 
      catch (FaultException unknownFault) 
      { 

      } 
      catch (CommunicationException communicationException) 
      { 

      } 

답변

2

문제는 당신이 그것을 작동합니다 제거하면

var invalidOperationException = 
     new InvalidOperationException(
     "Can't dowork", exception); 

에서 제공하는 내부 예외입니다.

내 생각 엔 CLR 예외를 직렬화하려는 것과 관련이 있다고 생각합니다.

+0

감사합니다. 이미 내부 예외를 제거했으며 정상적으로 작동합니다. 나는 대답 하려다가 대답을 정확히 보았습니다. 어떤 방법 으로든 답장을 보내 주셔서 감사합니다. –