Tratamento de erros HTTP Web do WCF
O tratamento de erros HTTP Web do Windows Communication Foundation (WCF) permite que você retorne erros de serviços HTTP Web do WCF que especificam um código de status HTTP e retornam detalhes do erro usando o mesmo formato da operação (por exemplo, XML ou JSON).
Tratamento de erros HTTP Web do WCF
A classe WebFaultException define um construtor que permite especificar um código de status HTTP. Esse código de status é retornado ao cliente. Uma versão genérica da classe WebFaultException, WebFaultException<T> permite que você retorne um tipo definido pelo usuário que contém informações sobre o erro que ocorreu. Esse objeto personalizado é serializado usando o formato especificado pela operação e retornado ao cliente. O exemplo a seguir mostra como retornar um código de status HTTP.
public string Operation1()
{
// Operation logic
// ...
throw new WebFaultException(HttpStatusCode.Forbidden);
}
O exemplo a seguir mostra como retornar um código de status HTTP e informações extras em um tipo definido pelo usuário. MyErrorDetail
é um tipo definido pelo usuário que contém informações extras sobre o erro que ocorreu.
public string Operation2()
{
// Operation logic
// ...
MyErrorDetail detail = new MyErrorDetail()
{
Message = "Error Message",
ErrorCode = 123,
}
throw new WebFaultException<MyErrorDetail>(detail, HttpStatusCode.Forbidden);
}
O código anterior retorna uma resposta HTTP com o código de status Proibido e um corpo que contém uma instância do objeto MyErrorDetails
. O formato do objeto MyErrorDetails
é determinado por:
O valor do parâmetro
ResponseFormat
do atributo WebGetAttribute ou WebInvokeAttribute especificado na operação de serviço.O valor de AutomaticFormatSelectionEnabled.
O valor da propriedade Format acessando o OutgoingWebResponseContext.
Para obter mais informações sobre como esses valores afetam a formatação da operação, consulte a Formatação HTTP Web do WCF.
WebFaultException é um FaultException e, portanto, pode ser usado como o modelo de programação de exceção de falha para serviços que expõem pontos de extremidade SOAP, bem como pontos de extremidade HTTP Web.