wcf客户端-soap编码-不同命名空间中的复杂类型
当尝试反序列化 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)]
如果消息是文字,则效果很好。但是,该服务使用 SOAP 编码。当我将以下内容添加到 XmlSerializerFormatAttribute 时:
Use = System.ServiceModel.OperationFormatUse.Encoded
然后 XmlElementAttributes 似乎被忽略,我再次遇到命名空间不匹配问题。我认为我需要改用 SoapElementAttribute,但它没有办法设置命名空间。
那么...如何以类似于 Soap 编码消息上的 XmlElementAttribute 的方式设置命名空间?
I keep running into namespace mismatches when trying to deserialize the SOAP response.
The response is unqualified and the nested complex types are qualified with a namespace like this:
<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>
I can get the namespaces correct by adding the following attribute to the generated types:
[System.Xml.Serialization.XmlElementAttribute(Namespace="com.namespace1.www/complexTypes", Form=System.Xml.Schema.XmlSchemaForm.Qualified, Order=0)]
This works fine if the message is Literal. However, this service uses SOAP encoding. When I add the following to the XmlSerializerFormatAttribute:
Use = System.ServiceModel.OperationFormatUse.Encoded
Then the XmlElementAttributes appear to be ignored and I once again have namespace mismatch issues. I presume that I need to use the SoapElementAttribute instead, but it does not have a way to set the namespace.
So...How can I set the namespace in a manner similar to XmlElementAttribute on Soap encoded messages?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论