C# 并非所有属性都在WCF调用中发送或接收

C# 并非所有属性都在WCF调用中发送或接收,c#,.net,wcf,C#,.net,Wcf,我在调试我的新WCF服务时感到很沮丧。问题在于某个数据合同。似乎在服务器端的反序列化中,在某个属性发生某些情况后,其余的属性未设置。我已经查看了从元数据生成的xsd模式,看起来一切正常。我已经使用Fiddler来嗅探发送的soap数据包,并将所有数据留在客户端。我甚至将Order参数设置为DataContract属性,以查看是否可以看到模式,但从未看到过。我还将DataMember名称与消息中的名称进行了比较,它们都匹配。我发现的唯一模式是: 以下是有关DataContract对象的xsd定义:

我在调试我的新WCF服务时感到很沮丧。问题在于某个数据合同。似乎在服务器端的反序列化中,在某个属性发生某些情况后,其余的属性未设置。我已经查看了从元数据生成的xsd模式,看起来一切正常。我已经使用Fiddler来嗅探发送的soap数据包,并将所有数据留在客户端。我甚至将Order参数设置为DataContract属性,以查看是否可以看到模式,但从未看到过。我还将DataMember名称与消息中的名称进行了比较,它们都匹配。我发现的唯一模式是:

以下是有关DataContract对象的xsd定义:

<xs:complexType name="Attachment">
 <xs:sequence>
  <xs:element minOccurs="0" name="dateTime" type="xs:dateTime"/>
  <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="fileName" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="guid" type="ser:guid"/>
  <xs:element minOccurs="0" name="obsDate" type="xs:dateTime"/>
  <xs:element minOccurs="0" name="operation" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="originalFileName" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="title" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
 </xs:sequence>
</xs:complexType>
由于某些原因,似乎无法设置obsDate之后的所有属性


为什么?

启用WCF错误日志记录并通过查找根本原因启用WCF错误日志记录并通过查找根本原因这将有助于查看SOAP并了解客户端是否为.NET

我在使用非.NET客户端时看到过类似的情况。xsd指定了一个-可以使用
Order
属性或默认为字母顺序来确定。一些客户似乎将此视为一个要素;他们似乎认为“这都是相同的XML”(请参阅)


总之,检查SOAP元素是否符合与XSD匹配的正确顺序。

查看SOAP并了解客户端是否为.NET会有所帮助

我在使用非.NET客户端时看到过类似的情况。xsd指定了一个-可以使用
Order
属性或默认为字母顺序来确定。一些客户似乎将此视为一个要素;他们似乎认为“这都是相同的XML”(请参阅)


总之,检查SOAP元素的顺序是否与XSD匹配。

您可以发布用于反序列化的XML(以及导致属性未设置的XML)吗?您可以发布用于反序列化的XML(以及导致属性未设置的XML)吗?是的,客户机是.NET,但2.0。我基本上已经使用WCF重写了一个旧的asp.net web服务(.asmx)。我无法更改使用者/主机。我对订单进行了修改,并尝试匹配传入的消息,但没有成功。不过我会再试一次。我还将在稍后发布传入的SOAP消息。将DataContract对象DataMember Order与传入消息的顺序匹配将修复此问题。我不太确定昨晚玩这个的时候我做错了什么。是的,客户端是.NET,但是2.0。我基本上已经使用WCF重写了一个旧的asp.net web服务(.asmx)。我无法更改使用者/主机。我对订单进行了修改,并尝试匹配传入的消息,但没有成功。不过我会再试一次。我还将在稍后发布传入的SOAP消息。将DataContract对象DataMember Order与传入消息的顺序匹配将修复此问题。我不太确定昨晚玩这个的时候我做错了什么。
[DataContract(Namespace="http://www.myns.com")]
public class Attachment
{
    public enum AttachmentSortOrder { Date, FileType }

    [DataMember]
    public Guid guid;
    [DataMember]
    public DateTime dateTime;
    [DataMember]
    public string operation;
    [DataMember]
    public DateTime obsDate;
    [DataMember]
    public string originalFileName;
    [DataMember]
    public string fileName;
    [DataMember]
    public string title;
    [DataMember]
    public string type;
    [DataMember]
    public string description;
}