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


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

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

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

Класс WebFaultException содержит конструктор, позволяющий указать код состояния HTTP. Затем этот код состояния возвращается клиенту. Общая версия класса WebFaultException, WebFaultException позволяет возвращать определенный пользователем тип, содержащий сведения о возникшей ошибке. Этот пользовательский объект сериализуется с помощью формата, указанного операцией и возвращенного клиенту. Следующий пример показывает, как вернуть код состояния 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 определяется следующими элементами.

Дополнительные сведения о влиянии этих значений на форматирование операции см. в разделе Форматирование веб-объектов HTTP WCF.

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

См. также

Основные понятия

Форматирование веб-объектов HTTP WCF
Определение и задание сбоев
Обработка исключений и сбоев
Сбои при отправке и получении

Другие ресурсы

Модель веб-программирования HTTP WCF