Flex によって消費される .NET Web サービスで、非常に奇妙な問題が発生しています。
[XmlAttribute('xxx')] 属性を持つプロパティ以外の何もない非常に単純なクラスがあります。
public class OrderAddress
{
public OrderAddress() {}
[XmlAttribute("firstName")]
public string FirstName { get; set; }
[XmlAttribute("lastName")]
public string LastName { get; set; }
[XmlAttribute("company")]
public string Company { get; set; }
[XmlAttribute("address1")]
public string Address1 { get; set; }
... (more properties)
}
問題は、Flex でこのオブジェクトがデシリアライズされると、デバッガーで EVERY SINGLE フィールドが null になることです。OrderAddress クラスのインスタンスは null ではなく、すべてのフィールドです。Web サービス プロキシ レイヤーが最新であることを 100% 確信しており、Fiddlerで示されているように、100% 確実にデータが送信されています。
非常に奇妙なことは、これらのプロパティの 1 つを (XmlAttribute ではなく) 要素としてシリアル化するように変更し、C# Web サービスのみを再コンパイルすると、データが Flex によって即座に認識されることです。完全に未使用のフィールドを追加するとpublic string Foo = "foo";
、それも突然機能します。
以前にこのようなものを見たのは覚えていますが、うまく修正できたかどうかは覚えていません。
私にとっては午前 3 時 30 分であり、ハードコアなトラブルシューティングを延期する必要がありますが、読んでいる人に明らかな場合に備えて、これをここに捨てます。コードはモジュール内にあり、それが時々おかしなことを引き起こす可能性があることを私は知っていますが、これは非常におかしなことのようです。