15

我有一个关于 WCF 和 SUDS (Python) 之间表示继承的不同方式的问题。我有一个 C++/CLI WCF 服务器 (.NET 3.5 SP1),我正在尝试与之通信。我使用了 C#(也包括 WCF)客户端,它工作正常,但使用 SUDS 客户端(Python 2.6.4、SUDS 0.3.8)时出现问题。大部分都很好,但是对于继承类型,区别似乎在于两者在 SOAP XML 中表示继承的方式。当我查看服务器记录的消息时,我得到类似于以下的结果:

C#客户端:

<ns:DerivedType>
...
</ns:DerivedType>

Python客户端:

<ns:BaseType xsi:type="ns:DerivedType">
...
</ns:BaseType>

是否可以更改 WCF 服务器以接受 Python 样式?或者更改 Python SUDS 客户端以发送 WCF 样式?哪一个是正确的?

4

2 回答 2

1

不了解 python 方面,但 WCF 方面有几个选项。更直接的选项是创建一个消息检查器来检测 python 生成的肥皂并将其转换为更适合 WCF 服务的东西。

更困难但“更纯粹”的选项是确定如何塑造由 WCF 服务生成的 WSDL,以便它允许 python 客户端生成上述可口的肥皂。一旦找到所需的调整,您将使用MessageContract 类代替 DataContract 使服务生成调整后的 WSDL。.NET 客户端应该毫无怨言地处理这个经过调整的 WSDL。

于 2011-07-28T19:13:24.423 回答
0

您可以使用数据协定序列化程序来控制如何创建和读取 xml。请参阅:http: //msdn.microsoft.com/en-us/library/ms731073.aspx

于 2011-05-14T17:11:17.727 回答