C# 过帐到wcf时,将xml版本标记添加到xml时,数据将丢失
好吧,我真的迷路了。我创建了一个wcf服务,将xml发布到该服务中,这些服务对数据进行处理。除了将开始的xml标记放在xml的最顶端之外,其他一切都很好。当我在调试模式下查看所有内容时,数据显示为null 我在wcf中的C#代码是这样的: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
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?是的,我遗漏了该部分。它已经在那里了。我刚刚在上面编辑了我的代码。如果你能控制两端,请看一下。