2010-05-06 2 views
8

가끔씩 WCF 직렬화 중에 (OperationContract에서 DataContract를 반환 한 후) 응용 프로그램 예외가 throw되는 문제가 발생합니다. 내가 할 수있는 유일한 (덜 meaningfull) 메시지가WCF 직렬화 문제/예외 추적 방법

System.ServiceModel.CommunicationException 입니다 : 기본 연결은 이었다 폐쇄 : 연결이 예기치 않게 을 폐쇄했다.

내부 예외에 대한 통찰력이 없으므로 직렬화 중에 오류를 일으킨 원인을 찾기가 정말 어렵습니다.

누군가 이러한 예외를 추적, 기록 및 디버깅하는 좋은 방법을 알고 있습니까? 아니면 예외를 잡아서 처리하고 정의 된 FaulMessage를 클라이언트에 보낼 수 있습니까?

는이 같은 서비스 동작을 구성 할 경우

답변

5

당신은 내부 예외를 얻어야한다 감사 :

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
       <behavior name="YourServiceBehaviour"> 
        ... 
        <serviceDebug includeExceptionDetailInFaults="true" /> 
        ... 
       </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

은 또한 당신이 추적을 활성화 할 수 있습니다. 이제 좋은 기사를 발견,하지만 어쩌면 이것은 당신이 시작 도착하지 않았 :

http://developers.de/blogs/damir_dobric/archive/2009/03/24/using-of-wcf-trace.aspx

+4

답장을 보내 주셔서 감사합니다. includeExceptionDetailInFaults 속성은 OperationContract 경계 내에서 발생하는 예외에만 적용됩니다. 직렬화 중 문제가 이러한 경계 밖에서 발생합니다. 두 번째 제안은 이러한 문제를 기록 (처리하지 못함)하는 솔루션 일 수 있습니다. 나는 그것을 더 깊게 볼 것이다. – Fabiano

+0

링크를 이용해 주셔서 감사합니다. 로깅은 내가 문제를 찾는데 도움이되었다. – Walkor

0

나는 그 문제가 있고, 때때로 나는 점에서, 모든 열없이 DataTable의를 전송 한 ... 직렬화 문제였다 채널이 오류나 추적없이 방금 닫힌 경우.