对于不同的方法(OperationContract),我们可以在同一服务(ServiceContract)中使用DataContractSerializer,XMLFormatSerializer吗?

时间:2013-03-05 16:34:17

标签: asp.net wcf c#-4.0 wcf-binding

代码:

        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序列化时,我应该提供哪些解决方法?任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分:0)

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