WCF序列化JAX WS对空对象的响应-可能的命名空间问题?

WCF序列化JAX WS对空对象的响应-可能的命名空间问题?,wcf,jax-ws,Wcf,Jax Ws,我正在使用WCF客户端调用JAX web服务 当响应被反序列化时,响应对象中的数组总是空的。但是,如果我使用消息检查器将名称空间手动添加到响应中的数组类型,则响应将正确反序列化 因此,我得到的答复是: <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" /> <

我正在使用WCF客户端调用JAX web服务

当响应被反序列化时,响应对象中的数组总是空的。但是,如果我使用消息检查器将名称空间手动添加到响应中的数组类型,则响应将正确反序列化

因此,我得到的答复是:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" />
  <S:Body>
    <ns2:myResponse xmlns:ns2="http://mynamespace.com/">
      <myArray>
        <myObject>
          <myString>abcde</myString>
          <myInt>12345</myInt>
        </myObject>
      </myArray>
    <id>7777</id>
  </ns2:myResponse>
  </S:Body>
</S:Envelope>

abcde
12345
7777
这将生成一个myResponse类型的对象,该对象具有正确的'id'字段,但myArray字段的myObject类型为空数组

当我手动编辑接收到的消息以在myObject标记之前添加名称空间别名“ns2”时,它看起来如下所示:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" />
  <S:Body>
    <ns2:myResponse xmlns:ns2="http://mynamespace.com/">
      <myArray>
        <ns2:myObject>
          <myString>abcde</myString>
          <myInt>12345</myInt>
        </ns2:myObject>
      </myArray>
    <id>7777</id>
  </ns2:myResponse>
  </S:Body>
</S:Envelope>

abcde
12345
7777
正确的对象是反序列化的,即大小为1的myArray包含正确的myObject


有人能告诉我为什么会这样,以及我如何在没有手动干预的情况下使WCF反序列化正确工作吗?

不确定这是否正是您的问题,但可能值得一试

我们也有类似的问题。在我们的例子中,有一个复杂的对象正在被反序列化,缺少几个字段。使用调试器,我们可以看到信息就在那里。但我们无法通过密码找到它

对我们来说,有效的方法是将对象强制转换为包含所有字段的类型


检查references.cs文件,其中定义了哪些数据类型

是reference.cs中定义的类型包含所有Nessery字段。所有字段实际上都没有丢失,即没有任何字段为空。数组字段的类型正确,但当它应该包含一项时,它是空的。感谢您的回答,很遗憾,它没有解决问题。