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 CommunicationException classes derivadas 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 no estado em que se encontram (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. Isso só é feito para erros de comunicação e proxy/canal.

  • Utilização de contratos de culpa

  • Implementação da IErrorHandler interface

  • Tratamento de ServiceHost eventos

Contratos de Falha

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>arquivo . 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 estendendo o controle sobre o tratamento de erros e relatórios

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