WCF 서비스에서 FaultException이 반환되면이를 종료하는 대신 채널을 중단해야합니다. 클라이언트와 서비스 모두이 접근 방식으로 잘 작동하지만 IErrorHandler를 서비스에 구현하고 예외를 기록한 후 클라이언트에서 Abort를 호출하면 서비스가 로그를 기록함을 알 수 있습니다.오류가 발생한 WCF 채널에서 중단을 호출하면 서버 측 오류가 기록됩니다.
System.ServiceModel.CommunicationException : 소켓 연결이 중단되었습니다 ...
서비스 정보를이 서비스 로그로 오염시키지 않고 서비스 관련 오류 만 기록하려고합니다. 나는 분명히 어떤 CommunicationExceptions의 로깅을 멈출 수 있지만 내 서비스는 다른 서비스의 WCF 클라이언트이기도하며 이러한 서비스로 인해 발생하는 CommunicationExceptions는 기록되어야합니다.
어떻게 그럴 수 있습니까?
왜 종료하지 않을 것이라고 설명 할 수 있습니까? 그것은 당신에게 더 나은 대답을 얻을 수 있습니다. –
예외가 발생한 후 채널에서 Close()를 호출하면 원래 예외를 마스킹하여 예외 자체가 throw되는 WCF의 잘 알려진 문제가 있습니다. 따라서 채널에 오류가 발생하면 Close()보다는 Abort()를 사용하십시오. 아래의 Tomas의 링크와 블로그 게시물에 인용 된 링크를 참조하십시오. –