![]() |
1
2
最合适的SOA模式可能是错误契约,它本质上是封装在SOAPException中的数据契约。 我在.NET中发布了一些示例,因为它看起来就是您正在使用的(这就是我所知道的:) 在WCF中,您可以定义DataContract,然后使用“FaultContract”属性修饰OperationContract接口,该属性将其指定为返回值:
对于asmxweb服务(就像您在代码段中使用的那样),您不能使用此属性或设置。因此,要实现该模式,您需要:
似乎有很多工作要做,但通过这种方式,您可以完全控制返回的数据。顺便说一句,这是 ServiceFactory 来自Microsoft针对ASMX web服务的模式和实践。 |
![]() |
2
1
|
![]() |
3
1
您可以使正确的错误从旧的ASMX服务返回,但这并不容易。首先,您必须手工编写WSDL,因为ASMX基础设施永远不会在WSDL中创建错误元素。然后,您必须将所需的故障数据序列化到一个xmlement中,然后将该元素作为SoapException的Detail属性提供给抛出的SoapException。 使用WCF更容易。您可以为每个操作声明多个faultcontract,WCF将生成正确的WSDL来引用它们。然后简单地抛出FaultException,其中类型T是FaultContract的类型。将T实例传递给构造函数,就可以了。 |
![]() |
4
0
诀窍是说服web服务堆栈将异常(这是编写业务逻辑的“正确”方式)转换为正确编排的错误细节。我帮不了你。 |
![]() |
Vedant · 如何解决python啦啦队长问题?[已关闭] 3 年前 |
![]() |
cobby · 在战略模式中使用工厂模式? 3 年前 |
![]() |
Nobody · Java中带while循环的三角形模式 3 年前 |
![]() |
Eduard Stefanescu · 如何在层之间传输异常? 7 年前 |
![]() |
D. Schreier Talha Noyon · 对于目录中的每个类 7 年前 |
![]() |
Tanvi Jaywant · 如何重载类 7 年前 |