3

代码:

        public interface IServices
        {
        [OperationContract]
        [XmlSerializerFormat]
        GetProductsResponse Getproducts(GetProductsRequest productsrequest);

        [OperationContract]
        SaveProductsResponse SaveProducts1(SaveProductsRequest1 productsrequest);
        }     

        [DataContract]
        public class SaveProductsRequest1
        {
            [DataMember]
            public List<Person> Persons;
        }

        [DataContract]
        public class Person
        {
            [DataMember]
            public int Id;
        }

客户 :

    ServicesClient client = new ServicesClient();
    SaveProductsRequest1 req = new SaveProductsRequest1();
    req.Persons = new List<Person> { new Person { Id = 10 } }.ToArray();
    client.SaveProducts1(req);

我正在SaveProducts1从客户端调用调用,但无法在我的服务端获取值“10”(似乎是反序列化问题)。但是当我[XmlSerializerFormat]从调用中删除属性时Getproducts,它工作正常,我能够看到值 10。

为什么会发生(为什么 SaveProducts1 依赖于 Getproducts OperationContract)?当我想同时使用 xml 和 datacontract 序列化时,我应该提供什么解决方法?任何帮助表示赞赏。

注意:我有非常更新的代理。我在代理中没有看到任何问题。即使我尝试了一个样本并遇到了同样的问题

4

1 回答 1

0

XmlSerializerFormat添加属性后,您是否刷新了客户服务参考?可能是合同不再匹配。

于 2013-03-05T16:58:36.953 回答