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. Erros desse tipo são retornados ao cliente como classes derivadas de CommunicationException ou CommunicationException.

Erros de proxy/canal são erros que ocorrem no próprio canal ou proxy. Os erros desse tipo incluem: 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. Erros desse tipo são retornados ao cliente as-is (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 procedimentos:

  • Manipulando diretamente a exceção gerada. Isso só é feito para erros de comunicação e proxy/canal.

  • Usando contratos de falha

  • Implementando 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 FaultException objeto. O FaultException objeto 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 IErrorHandler interface 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 erro personalizado, como registro em log. Para obter mais informações sobre IErrorHandler e Extensão do Controle sobre o Tratamento de Erros e Relatórios

Eventos do ServiceHost

A ServiceHost classe 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, veja ServiceHost