Tratamento de erros HTTP da Web WCF
O tratamento de erros HTTP da Web do Windows Communication Foundation (WCF) permite que você retorne erros de serviços HTTP da 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 da Web WCF
A WebFaultException classe define um construtor que permite especificar um código de status HTTP. Esse código de status é então retornado ao cliente. Uma versão genérica da WebFaultException classe, WebFaultException<T> permite que você retorne um tipo definido pelo usuário que contém informações sobre o erro que ocorreu. Este 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 adicionais 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 MyErrorDetails
objeto. O formato do MyErrorDetails
objeto é determinado por:
O valor do
ResponseFormat
parâmetro do WebInvokeAttribute ou WebGetAttribute atributo especificado na operação de serviço.O valor de AutomaticFormatSelectionEnabled.
O valor da Format propriedade acessando o OutgoingWebResponseContext.
Para obter mais informações sobre como esses valores afetam a formatação da operação, consulte WCF Web HTTP Formatting.
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 da Web.