Обработка ошибок веб-протокола 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
определяется следующими элементами.
Значение параметра ResponseFormat атрибута WebGetAttribute или WebInvokeAttribute, указанного в операции службы.
Значение AutomaticFormatSelectionEnabled.
Значение свойства Format при обращении к OutgoingWebResponseContext.
Дополнительные сведения о влиянии этих значений на форматирование операции см. в разделе Форматирование веб-объектов HTTP WCF.
Исключение WebFaultException является FaultException и, следовательно, может быть использовано в качестве модели программирования ошибок для служб, предоставляющих конечные точки SOAP, а также сетевые конечные точки HTTP. Поскольку в протоколе HTTP не определен документ метаданных, выражающих правила обработки ошибок, функция WebFaultException является серверной и не применяется к модели программирования клиентских прокси-классов WCF.
См. также
Основные понятия
Форматирование веб-объектов HTTP WCF
Определение и задание сбоев
Обработка исключений и сбоев
Сбои при отправке и получении