Compartilhar via


Tratamento de erros do WCF

Os erros encontrados por um aplicativo WCF pertencem a um dos três grupos:

  1. Erros de comunicação

  2. Erros de canal/proxy

  3. 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:

  1. Faulted

  2. UnknownMessageReceived

Para obter mais informações, consulte ServiceHost.