コード:
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つのサンプルで試しても、同じ問題が発生します