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


Обработка ошибок веб-протокола HTTP WCF

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

Обработка ошибок веб-протокола 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.

См. также