Partilhar via


Tratamento de erros WCF

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

  1. Erros de comunicação

  2. Erros de proxy/canal

  3. Erros da Aplicação

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

Erros de proxy/canal são erros que ocorrem dentro do próprio canal ou proxy. Erros desse tipo incluem: tentar usar um proxy ou canal que foi fechado, existe uma incompatibilidade de contrato entre o cliente e o serviço ou as credenciais do cliente são rejeitadas pelo serviço. Existem 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 deste tipo são enviados ao cliente como FaultException ou FaultException<TDetail>.

A manipulação de erros no WCF é executada por um ou mais dos seguintes procedimentos:

  • Lidar diretamente com a exceção lançada. Esta prática é realizada apenas para erros de comunicação ou de canal/proxy.

  • Utilização de contratos de culpa

  • Implementação da IErrorHandler interface

  • Gestão de ServiceHost eventos

Contratos de Responsabilidade em Caso de Falhas

Os contratos de falha permitem definir os erros que podem ocorrer durante a operação do serviço de forma independente da plataforma. Por padrão, todas as exceções lançadas 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 lhe dá controle total sobre a mensagem de falha que é retornada ao cliente e permite que você execute o processamento de erros personalizado, como registro. Para obter mais informações sobre IErrorHandler e ampliação do controle sobre o tratamento e relato de erros

Eventos 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 mais informações, consulte ServiceHost