WCF IsReference = true将值重置为Default

时间:2011-10-21 03:54:58

标签: wcf datacontract

我有一个非常简单的WCF 4.0服务,我在其中返回一个POCO实体对象,其IsReference设置为true。当我从我的服务返回对象时,原始类型(int,double等)的值被正确设置,并且具有引用的值也正确地被序列化,我已经验证序列化正确地发生在返回之前放入以下代码声明。我还验证了成员用[DataMember]正确标记,他们有公共getter / setter。但是,当调用者接收到对象时,所有基元类型都设置为0,带引用的类型设置为NULL。

非常感谢任何帮助!

try
       {
           var stream = new MemoryStream();
           var dataContractSerializer = new DataContractSerializer(onlineSellItemDetail.GetType());

           dataContractSerializer.WriteObject(stream, onlineSellItemDetail);


       }

       catch (Exception ex)
       {
           Console.WriteLine(ex.InnerException.ToString()); 
       }

1 个答案:

答案 0 :(得分:0)

这几乎总是因为客户端没有收到XML,空XML或不兼容的XML。有时,这是因为在服务端没有正确刷新或关闭流。其他时候,客户端在其自己的流中使用完全有效的XML进行操作,但是可能不是从流的开头开始读取XML。如果在服务端和客户端启用跟踪,生成跟踪日志,并使用SvcTraceViewer进行分析,并且并行使用Fiddler来监控客户端和服务端的线路流量,我想你会发现肯定回答!