WCF序列化异常 - NetDataContractSerializer

时间:2012-03-20 02:50:34

标签: c# wcf-serialization

我在尝试将数据集合发送到我们的服务时收到错误。但是,如果我只将一个项目添加到集合中,那么它会产生罚款。一旦我添加了多个项目,我就会收到以下错误

NetDataContractSerializer不支持使用类型'SmartTrade.Shared.Common.PaymentTerm'作为只获取集合。请考虑使用CollectionDataContractAttribute属性或SerializableAttribute属性标记类型,或者向属性添加setter。

因此,需要注意的关键是我可以使用单个项目发送集合(IList<>)。我已将MaxReceivedMessageSize和MaxArrayLength增加到我认为更合理的范围。

任何人都可以帮助我吗

2 个答案:

答案 0 :(得分:3)

最后我解决了这个问题。其中一个基类中只有一个属性,它只有一个getter属性,并且没有setter属性。所以我不得不添加一个setter属性

答案 1 :(得分:3)

添加无意义的setter的另一种方法是将属性标记为序列化忽略。

这可以通过使用System.Runtime.Serialization.IgnoreDataMemberAttribute

装饰您的财产来完成

示例:

public class Whatever
{
    [IgnoreDataMember] // this won't be serialized now
    public List<string> Things
    {
        get { return _things; }
    }
}