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