WCF在使用.Net客户端但不使用Soap UI时返回序列化异常

时间:2018-03-28 21:36:44

标签: c# wcf

我有一个名为Organization的对象,它表示名为ORGANIZATION的数据库表中的不同行。有些组织代表商家,商家可以拥有" MerchantAux"记录。

组织类看起来像这样:

    [DataContract]
    public class Organization : Core.Framework.BaseEntity
    {
        [Key]
        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public virtual MerchantAux MerchantAuxRecord { get; set; }

        public Organization()
        {
        }
    }

MerchantAux类看起来像这样:

    [DataContract]
    public class MerchantAux : BaseEntity
    {
        [Key]
        [DataMember]
        public int Code { get; set; }
        [DataMember]
        public int SettlementDelay { get; set; }
        [DataMember]
        public Nullable<System.Guid> WalletSiteId { get; set; }
        [DataMember]
        public bool? AddCardNotPresent { get; set; }
        [DataMember]
        public bool? BatchEmailNotification { get; set; }
        [DataMember]
        public string CsvEmailRecipients { get; set; }

        [IgnoreDataMember]
        public virtual ICollection<Organization> Organizations { get; set; }

        public MerchantAux()
        {
             Organizations = new List<Organization>();
        }
    }

这些对象在模型程序集中定义。 WCF服务程序集具有ServiceContract和OperationContracts来获取和保存组织。

让组织顺利运作。保存组织失败的结果非常奇怪。

  

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数boardingservice:organization时出错。 InnerException消息是&#39;使用类型&#39; MerchantAux&#39;因为NetDataContractSerializer不支持只获取集合。请考虑使用CollectionDataContractAttribute属性或SerializableAttribute属性标记类型,或者向属性添加setter。&#39;。有关详细信息,请参阅InnerException。

没有内在的例外。

哦是的... Soap UI调用Save方法没有问题,但是.Net客户端会抛出上述错误。有没有其他人看到过这种行为,其中序列化程序认为对象是一个集合?

对于好奇,我确实尝试将其更改为CollectionDataContract,但当然它会立即失败,但有一个例外,即MerchantAux没有实现IEnumerable(duh)。无论如何......任何想法都会很棒。

0 个答案:

没有答案