我对如何使用 SOAP 将错误返回给客户端感到困惑。
我有一个 wcf 服务,但我不确定客户端使用的是什么技术,所以我想坚持 SOAP 规范。
据我所知,故障消息似乎是处理此问题的最佳方式。
我可以看到我的服务有许多不同的可能错误:
- 空\预期的数据错误
- 数据格式错误(即:db 只允许 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 呢?您将如何处理业务规则错误?即:客户已经存在,订单项太多,不发货到该地区,付款方式不接受等?
请让我知道此方法是否正确或是否有其他可接受的解决方案以及您将如何处理“业务规则”情况。