1

我最近在 StackOverflow 上发布了一个问题:

WCF 中的 SOAP 消息反序列化问题 - 字段具有空值

这是关于 WCF 序列化引擎之一的东西XmlSerializer,用于序列化/反序列化 SOAP 消息。反序列化起初不起作用 - 一些命名空间问题。

回到现在:)

[XmlElement, MessageBodyMember]如果它们是简单类型,现在可以很好地反序列化带有装饰的字段。

自定义类型存在问题:它们已设置,但它们的字段具有空值:(

我应该在 XmlSerializer 上进行配置吗?

[MessageContract]
public class Request
{
    [XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified), MessageBodyMember]
    public XType X { get; set; }
}

[what to write here?]
public class XType
{
    [XmlElement(Form = System.Xml.Schema.XmlSchemaForm.Unqualified), body member?]
    public string AString { get; set; }

    ... maybe another nested complex objects
}
4

1 回答 1

1

我遇到了这些序列化问题,因为服务客户端的序列化引擎与 WCF 使用的引擎不“兼容”。当然,请求仍然是标准 XML(SOAP 1.2),但是,嘿,WCF 是 Microsoft 产品 :)

一些解决方法:

  • 添加一个MessageFormater - 在服务器端实现一些反序列化逻辑 - 一篇很好的文章
  • 添加一个MessageInspector - 读取 SOAP 请求并执行一些 XML 格式设置(以便反序列化工作正常) - 您可以通过此链接阅读有关它的信息。
于 2012-08-07T19:19:13.410 回答