今天,在调用一个WCF接口服务的时候,在WCF方法里面获得的结果是有值的,但是,在外面调用WCF方法的时候,返回的值对象属性却为空;
对象如下:
[DataContract] public class AssembleFqcErrorInfo { public string Z_DES { get; set; } public string ERROR_ID { get; set; } public string ERROR_NO { get; set; } public string ERROR_NAME { get; set; } public string F_DES { get; set; } public Nullable<decimal> ERROR_COUNT { get; set; } }
就发现,在WCF服务的方法里面返回的对象属性是有值的,但是,在接收的对象属性却是null。
后来发现,[DataContract]服务契约,默认情况下,所有的成员属性都被排除在外,不会被序列化,所有需要把每一个要传送的成员声明为DataMember
[DataContract] public class AssembleFqcErrorInfo { [DataMember] public string Z_DES { get; set; } [DataMember] public string ERROR_ID { get; set; } [DataMember] public string ERROR_NO { get; set; } [DataMember] public string ERROR_NAME { get; set; } [DataMember] public string F_DES { get; set; } [DataMember] public Nullable<decimal> ERROR_COUNT { get; set; } }
如上,解决问题。