Tratamento de erros do WCF
Os erros encontrados por um aplicativo WCF pertencem a um dos três grupos:
Erros de comunicação
Erros de canal/proxy
Erros de aplicativos
Erros de comunicação ocorrem quando uma rede não está disponível, um cliente usa um endereço incorreto ou o host de serviço não está escutando mensagens de entrada. Os erros desse tipo são retornados ao cliente como classes derivadas CommunicationException ou CommunicationException.
Erros de proxy/canal são erros que ocorrem dentro do canal ou proxy em si. Os erros desse tipo incluem: a tentativa de usar um proxy ou canal fechado, uma incompatibilidade de contrato entre o cliente e o serviço ou as credenciais do cliente são rejeitadas pelo serviço. Há muitos tipos diferentes de erros nesta categoria, muitos para listar aqui. Os erros desse tipo são retornados para o cliente como está (nenhuma transformação é executada nos objetos de exceção).
Erros de aplicativo ocorrem durante a execução de uma operação de serviço. Erros desse tipo são enviados ao cliente como FaultException ou FaultException<TDetail>.
O tratamento de erros no WCF é executado por um ou mais dos seguintes:
Manipulando diretamente a exceção gerada. Isso só é feito para erros de comunicação e proxy/canal.
Usando contratos de falha
Implementar a interface IErrorHandler
Tratamento de eventos ServiceHost
Contrato de falha
Os contratos de falha permitem definir os erros que podem ocorrer durante a operação de serviço de forma independente da plataforma. Por padrão, todas as exceções geradas de dentro de uma operação de serviço serão retornadas ao cliente como um objeto FaultException. O objeto FaultException conterá muito pouca informação. Você pode controlar as informações enviadas ao cliente definindo um contrato de falha e retornando o erro como um FaultException<TDetail>. Para obter mais informações, consulte Especificando e tratando falhas em contratos e serviços.
IErrorHandler
A interface IErrorHandler permite que você tenha mais controle sobre como seu aplicativo WCF responde a erros. Ele fornece controle total sobre a mensagem de falha que é retornada ao cliente e permite que você execute o processamento de erros personalizado, como registro em log. Para mais informações sobre IErrorHandler e Como estender o controle sobre o tratamento de erros e os relatórios
Eventos do ServiceHost
A classe ServiceHost hospeda serviços e define vários eventos que podem ser necessários para lidar com erros. Por exemplo:
Para obter mais informações, consulte ServiceHost.