Я запутался в том, как я должен возвращать ошибки клиенту, используя SOAP.
У меня есть служба wcf, но я не уверен, какую технологию использует клиент, поэтому я хотел бы придерживаться спецификации SOAP.
Насколько я читал, сообщения об ошибках, кажется, лучший способ справиться с этим.
Я вижу, что мой сервис имеет много возможных ошибок:
- Null \ ожидаемые ошибки данных
- Ошибки формата данных (т. Е. ДБ допускает только 3 символа)
- Ошибки диапазона данных "Клиент уже существует", ошибки типа "Невозможно обработать ваш запрос"
Было бы уместно создать новый объект для каждого из этих недостатков и бросить так:
FaultException<NullFault>(nf);
FaultException<InvalidDataFault>(idf);
FaultException<ArguementFault>(af);
FaultException<RangeFault>(rf);
Клиент передает большие объекты с множеством свойств практически каждому методу.
(т.е.: клиент, заказ и т. д.).
Будет ли это правильным способом обработки ошибок и отправки обратно клиенту?
Кажется неуместным добавлять каждую ошибку к атрибутам над методом.
IE:
[OperationContract]
[FaultContract(typeof(NullFault))]
[FaultContract(typeof(InvalidDataFault))]
[FaultContract(typeof(ArguementFault))]
[FaultContract(typeof(RangeFault))]
void CreateCustomer(Customer customer);
Кроме того, как насчет GenericFault? Как бы вы справились с ошибками бизнес-правил? То есть: клиент уже существует, слишком много позиций, его доставка не осуществляется, способ оплаты не принят и т. д .?
Пожалуйста, дайте мне знать, если этот метод является правильным или есть другое приемлемое решение и как бы вы справились с ситуацией «бизнес-правила».