Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 过帐到wcf时,将xml版本标记添加到xml时,数据将丢失_C#_Xml_Wcf_Serialization - Fatal编程技术网

C# 过帐到wcf时,将xml版本标记添加到xml时,数据将丢失

C# 过帐到wcf时,将xml版本标记添加到xml时,数据将丢失,c#,xml,wcf,serialization,C#,Xml,Wcf,Serialization,好吧,我真的迷路了。我创建了一个wcf服务,将xml发布到该服务中,这些服务对数据进行处理。除了将开始的xml标记放在xml的最顶端之外,其他一切都很好。当我在调试模式下查看所有内容时,数据显示为null 我在wcf中的C#代码是这样的: public interface ITest { [OperationContract] void DoWork(); [OperationContract] [WebDispatchFormatter] [WebIn

好吧,我真的迷路了。我创建了一个wcf服务,将xml发布到该服务中,这些服务对数据进行处理。除了将开始的xml标记放在xml的最顶端之外,其他一切都很好。当我在调试模式下查看所有内容时,数据显示为null

我在wcf中的C#代码是这样的:

public interface ITest
{
    [OperationContract]
    void DoWork();

    [OperationContract]
    [WebDispatchFormatter]
    [WebInvoke(UriTemplate = "MyTest", Method = "*")]
    void MyTest(PassedIn request);
}

[Serializable]
[DataContract(Namespace = "", Name = "")]
public class PassedIn
{
    public PassedIn() { }

    [DataMember]
    public string firstname {get; set;}
    [DataMember]
    public string lastname {get; set;}
    [DataMember]
    public string email {get; set;}
}
以下是不同的xml帖子:


测试
福
test@bar.com

测试
福
test@bar.com
通过向datamember添加顺序,我能够修复标记位于xml中时数据不会丢失的问题,如下所示:

public class PassedIn
{
    public PassedIn() { }

    [DataMember (order=1)]
    public string firstname {get; set;}
    [DataMember  (order=2)]
    public string lastname {get; set;}
    [DataMember  (order=3)]
    public string email {get; set;}
}  
但现在它产生了相反的效果。如果我没有“?xml version”标记,则数据将以null形式传递


有人碰到过这个吗?我真的需要一些建议。谢谢

我找到了答案。使用DataContractSerializer时,顺序很重要,但是如果不指定顺序,默认情况下,顺序是按字母顺序排列的,这就是为什么一些数据被设置,而另一些数据没有被设置的原因

我真的不想让顺序变得重要,所以我不得不从DataContractSerializer切换到另一个serlization引擎。XmlSerializer

链接到一些帮助我的信息:

我想出来了。使用DataContractSerializer时,顺序很重要,但如果不指定顺序,默认情况下,顺序是按字母顺序排列的,这就是为什么一些数据被设置,而其他数据没有设置的原因

我真的不想让顺序变得重要,所以我不得不从DataContractSerializer切换到另一个serlization引擎。XmlSerializer

链接到一些帮助我的信息:

不知道这是否重要,但您是否尝试过使用
[DataContract]
属性装饰PassedIn?是的,我遗漏了该部分..它已经在那里了。我刚刚在上面编辑了我的代码。如果你可以控制两端,请看一下。不知道这是否重要,但你是否尝试过用
[DataContract]
属性装饰PassedIn?是的,我遗漏了该部分。它已经在那里了。我刚刚在上面编辑了我的代码。如果你能控制两端,请看一下。