我对如何使用SOAP向客户端返回错误感到困惑。
我有一个WCF服务,但我不确定客户端使用的是什么技术,所以我想遵循SOAP规范。
据我所知,故障消息似乎是处理此问题的最佳方法。
我可以看到我的服务有许多可能的故障:
- 空值\预期数据错误 - 数据格式错误(即:数据库只允许3个字符) - 数据范围错误“客户已存在”,“无法处理您的请求”类型的错误
为每个故障创建一个新对象并抛出是否合适?
客户端向几乎每个方法(如客户、订单等)传递具有许多属性的大型对象。
这是否是处理错误并将其发送回客户端的正确方式?
似乎将每个故障添加到方法上面的属性中不太合适。
例如:
此外,如果出现GenericFault,您该如何处理业务规则错误?例如:客户已存在、行项目过多、不要向该地区发货、不接受付款方式等等。
请告诉我这种方法是否正确,或者是否有其他可接受的解决方案以及您如何处理“业务规则”情况。
我有一个WCF服务,但我不确定客户端使用的是什么技术,所以我想遵循SOAP规范。
据我所知,故障消息似乎是处理此问题的最佳方法。
我可以看到我的服务有许多可能的故障:
- 空值\预期数据错误 - 数据格式错误(即:数据库只允许3个字符) - 数据范围错误“客户已存在”,“无法处理您的请求”类型的错误
为每个故障创建一个新对象并抛出是否合适?
FaultException<NullFault>(nf);
FaultException<InvalidDataFault>(idf);
FaultException<ArguementFault>(af);
FaultException<RangeFault>(rf);
客户端向几乎每个方法(如客户、订单等)传递具有许多属性的大型对象。
这是否是处理错误并将其发送回客户端的正确方式?
似乎将每个故障添加到方法上面的属性中不太合适。
例如:
[OperationContract]
[FaultContract(typeof(NullFault))]
[FaultContract(typeof(InvalidDataFault))]
[FaultContract(typeof(ArguementFault))]
[FaultContract(typeof(RangeFault))]
void CreateCustomer(Customer customer);
此外,如果出现GenericFault,您该如何处理业务规则错误?例如:客户已存在、行项目过多、不要向该地区发货、不接受付款方式等等。
请告诉我这种方法是否正确,或者是否有其他可接受的解决方案以及您如何处理“业务规则”情况。