Поделиться через


Обработка ошибок Web HTTP в WCF

Обработка ошибок HTTP в Windows Communication Foundation (WCF) позволяет возвращать ошибки из веб-служб WCF Web HTTP, которые указывают код состояния HTTP и возвращают сведения об ошибке, используя тот же формат, что и операция (например, XML или JSON).

Обработка ошибок Web HTTP в WCF

Класс WebFaultException определяет конструктор, позволяющий указать код состояния HTTP. Затем этот код состояния возвращается клиенту. Универсальная версия WebFaultException класса позволяет возвращать определяемый пользователем тип, WebFaultException<T> содержащий сведения об ошибке, которая произошла. Этот пользовательский объект сериализуется с помощью формата, указанного операцией, и возвращается клиенту. В следующем примере показано, как вернуть код состояния HTTP.

public string Operation1()
{
    // Operation logic  
   // ...
   throw new WebFaultException(HttpStatusCode.Forbidden);
}  

В следующем примере показано, как вернуть код состояния HTTP и дополнительные сведения в определяемом пользователем типе. MyErrorDetail — это определяемый пользователем тип, содержащий дополнительные сведения об ошибке, которая произошла.

public string Operation2()
{
   // Operation logic  
   // ...
   MyErrorDetail detail = new MyErrorDetail()
   {  
      Message = "Error Message",  
      ErrorCode = 123,  
   }  
   throw new WebFaultException<MyErrorDetail>(detail, HttpStatusCode.Forbidden);  
}  

Предыдущий код возвращает HTTP-ответ с запрещенным кодом состояния и текстом, содержащим экземпляр MyErrorDetails объекта. Формат MyErrorDetails объекта определяется следующими параметрами:

Дополнительные сведения о том, как эти значения влияют на форматирование операции, см. в статье WCF Web HTTP Formatting.

WebFaultException является FaultException и, поэтому, может использоваться как модель программирования исключений сбоя для сервисов, предоставляющих конечные точки SOAP и веб-конечные точки HTTP.

См. также