gpt4 book ai didi

SOAP 的 WCF 故障

转载 作者:行者123 更新时间:2023-12-05 00:26:12 25 4
gpt4 key购买 nike

我对如何使用 SOAP 将错误返回给客户端感到困惑。

我有一个 wcf 服务,但我不确定客户端使用的是什么技术,所以我想坚持 SOAP 规范。

据我所知,故障消息似乎是处理此问题的最佳方式。

我可以看到我的服务有许多不同的可能故障:

  • Null\预期数据错误
  • 数据格式错误(即:db 只允许 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 又如何呢?您将如何处理业务规则错误?即:客户已经存在,行项目太多,不运送到该地区,不接受付款方式等?

请告诉我此方法是否合适,或者是否有其他可接受的解决方案,以及您将如何处理“业务规则”情况。

最佳答案

一般来说,返回错误是正确的做法,但您也应该问问自己,客户端程序将如何处理您在错误中返回的信息。如果客户端只需要知道发生了故障,那么您只需要一个故障即可。该故障可能包括客户端可以向其用户显示的消息文本。

如果客户端需要根据它是 NullFault 还是 RangeFault 采取不同的操作,那么您就需要单独的故障。但是,如果两者之间没有区别,那么可以为您自己和客户端程序节省一些时间和精力,并且只定义一个故障。

关于SOAP 的 WCF 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com