wcf client - soap encoding - 不同命名空间中的复杂类型

时间:2011-10-20 18:47:14

标签: c# wcf soap xml-serialization wcf-client

在尝试反序列化SOAP响应时,我一直遇到名称空间不匹配。

响应是不合格的,嵌套的复杂类型使用如下命名空间进行限定:

<getResult>
<enc:ApplicationExceptionOccurred xmlns:enc="com.namespace1.www/complexTypes">false</enc:ApplicationExceptionOccurred>
<enc:SystemExceptionOccurred xmlns:enc="com.namespace1.www/complexTypes">false</enc:SystemExceptionOccurred>
<enc:ComplexType xmlns:enc="com.namespace1.www/complexTypes">
...
</enc:ComplexType>
</getResult>

通过在生成的类型中添加以下属性,我可以正确地命名空间:

[System.Xml.Serialization.XmlElementAttribute(Namespace="com.namespace1.www/complexTypes", Form=System.Xml.Schema.XmlSchemaForm.Qualified, Order=0)]

如果消息是Literal,这可以正常工作。但是,此服务使用SOAP编码。当我将以下内容添加到XmlSerializerFormatAttribute:

 Use = System.ServiceModel.OperationFormatUse.Encoded

然后,XmlElementAttributes似乎被忽略,我再次遇到命名空间不匹配问题。我假设我需要使用SoapElementAttribute,但它没有办法设置命名空间。

那么......如何在Soap编码消息上以类似于XmlElementAttribute的方式设置命名空间?

0 个答案:

没有答案