https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-error-handling
은 WCF 응용 프로그램에 의해 발생하는 오류는 세 그룹 중 하나에 속하는 :
-
통신 오류
-
프록시 / 채널 오류
-
응용 프로그램 오류
통신 오류는 네트워크를 사용할 수 없을 때, 클라이언트가 잘못된 주소를 사용하여 발생하거나 서비스 호스트가 들어오는 메시지를 수신하지 않습니다. 로 이러한 유형의 오류는 클라이언트에 반환되는 CommunicationException 또는 CommunicationException이 클래스를 - 유래.
프록시 / 채널 오류는 채널 또는 프록시 자체에서 발생하는 오류입니다. 이러한 유형의 오류는 다음과 같습니다 폐쇄 계약 불일치가 서비스 거부 클라이언트와 서비스 또는 클라이언트의 자격 증명을 사이에 존재하고있다 프록시 또는 채널을 사용하려고 시도. 여기에 열거 할 수 없을만큼 많은이 범주의 오류의 다양한 종류가 있습니다. 이 유형의 에러는 (어떤 변환을 제외한 개체에 대해 수행되지 않음) 그대로 클라이언트로 반환된다.
응용 프로그램 오류는 서비스 작업을 실행하는 동안 발생합니다. 이러한 종류의 오류는 같은 클라이언트로 전송되는 오류 예외 또는 오류 예외 <TDetail> .
WCF에서 오류 처리는 다음 중 하나 이상에 의해 수행된다 :
-
직접 던져 예외를 처리. 이은 통신 및 프록시 / 채널 오류 이루어집니다.
-
오류 계약을 사용하여
-
이행 IErrorHandler의 인터페이스를
-
처리 하여 ServiceHost의 이벤트를
오류 계약
오류 계약은 플랫폼에 독립적 인 방식으로 서비스 운영시 발생하는 오류를 정의 할 수 있습니다. 기본적으로 서비스 작업 내에서 발생하는 모든 예외는로 클라이언트에 반환되는 오류 예외의 객체입니다. 오류 예외의 객체는 약간의 정보가 포함됩니다. 당신은 같은 오류를 오류 계약을 정의하고 반환하여 클라이언트로 전송되는 정보를 제어 할 수 있습니다 오류 예외 <TDetail> . 자세한 내용은 지정 및 계약 및 서비스에서 오류 처리 .
IErrorHandler
IErrorHandler의 인터페이스는 당신에게 당신의 WCF 응용 프로그램 오류에 응답하는 방법을보다 효율적으로 관리 할 수 있습니다. 그것은 당신에게 클라이언트에 반환하고 로깅과 같이 사용자 지정 오류 처리를 수행 할 수있는 오류 메시지를 완벽하게 제어 할 수 있습니다. 에 대한 자세한 내용은 IErrorHandler 및 확장 제어 이상 오류 처리 및보고
ServiceHost를 이벤트
하여 ServiceHost의 클래스의 호스팅 및 오류를 처리하기 위해 필요할 수있는 여러 이벤트를 정의합니다. 예를 들면 :
자세한 내용은 ServiceHost를을