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の両方のシリアル化を使用する場合、どのような回避策を提供する必要がありますか?助けていただければ幸いです。

注:プロキシを非常に更新しました。プロキシに問題はありません。1つのサンプルで試しても、同じ問題が発生します

4

1 に答える 1

0

XmlSerializerFormat属性を追加した後、クライアント サービス参照を更新しましたか? 契約がもはや一致しない可能性があります。

于 2013-03-05T16:58:36.953 に答える