Ошибка SOAP - это механизм передачи ошибки или состояния ошибки от сервиса к потребителю. Спецификация SOAP включает определение сбоев SOAP, предоставляя структуру для содержимого тела сообщения при возникновении ошибок. Это позволяет всем различным стекам SOAP выдавать ошибки стандартным способом.
FaultException
Используется для отправки нетипизированных данных об ошибках обратно потребителю.
FaultException<TDetail>
Универсальная версия, используемая для отправки типизированных данных об ошибках обратно клиенту, где TDetail представляет параметр типа для подробной информации о сбоях, которая должна быть сериализована обратно потребителю как часть сбоя SOAP сообщение.
FaultContractAttribute
FaultContractAttribute, также определенный в System.ServiceModel, позволяет разработчику службы объявлять, какие сбои может возникнуть у данной операции службы, если что-то пойдет не так. Ниже приведены ключевые сведения, относящиеся к работе с атрибутом FaultContractAttribute:
Атрибут может применяться только к операциям.
Атрибут не наследуется.
Атрибут может применяться несколько раз; Например, если ваша сервисная операция может возвращать различные типы ошибок, у вас будет объявление FaultContractAttribute
для каждого типа ошибок.
Конструктор атрибута принимает объект Type, используемый для ссылки на тип .NET объекта Detail, то есть тип сведений о сбое, которые вы хотите связать со своими сбоями.
[ServiceContract()]
public interface ICalculatorService{
[OperationContract()]
[FaultContract(typeof(string))]
double Divide(double numerator, double denominator);
}
public class CalculatorService : ICalculatorService {
public double Divide(double numerator, double denominator) {
if (denominator == 0.0d) {
string faultDetail = "You cannot divide by zero";
throw new FaultException<string>(faultDetail);
}
return numerator / denominator;
}
}
* Обратите внимание, что вместо строкового класса в этом примере вы можете определить свой собственный класс исключений.