2013-03-05 23 views
3

代碼:對於不同的方法(OperationContract),我們是否可以在DataContractSerializer,XMLFormatSerializer中使用相同的服務(ServiceContract)?

 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」(似乎反序列化問題)。但是,當我從Getproducts呼叫中刪除[XmlSerializerFormat]屬性時,它只是正常工作,我能夠看到值10.

爲什麼會發生(爲什麼SaveProducts1取決於Getproducts OperationContract)?當我想使用xml和datacontract序列化時,我應該提供哪種解決方法?任何幫助讚賞。

注:我有非常新的代理。我沒有看到任何代理問題。即使我嘗試了一個樣本並得到同樣的問題

回答

0

添加XmlSerializerFormat屬性後,您是否刷新了客戶服務參考?這可能是合同不再匹配。

+0

更新了問題 – 2013-03-05 17:01:15

相關問題