これはフレームワークのベータリリースのバグである可能性があります。または、クラスでひどく間違ったことをしています。
サービスのアクションへのPOSTを介して受信しようとしている基本モデルがあります。モデルには、XML要素としてのいくつかのプロパティとXML属性としてのいくつかのプロパティが含まれています。要素はモデルに正常にバインドされますが、属性は無視されます。
モデルの基本的な形式は次のとおりです。
[XmlRoot]
public class Entry
{
[XmlAttribute]
public string Label { get; set; }
[XmlElement]
public Link Parent { get; set; }
[XmlElement]
public string Data { get; set; }
}
public class Link
{
[XmlElement]
public string Href { get; set; }
}
これにより、次のXML応答に正常にシリアル化されます。
<Entry Label="Test">
<Parent Href="http://service/entries/123" />
<Data>WibblyWobblyTimeyWimey</Data>
</Entry>
同じXMLを使用してリクエストをサービスに送り返すと、Data要素のみが正常に永続化されていることがわかります。
を調べるHttpActionContext
と、RequestKeyValueModel
プロパティにはキー「Data」と「Parent」のみが含まれており、「Data」のみに値があることがわかります。
System.Net.Http.HttpClient
エントリの逆シリアル化を手動でテストしましたが、リクエストをオブジェクトとして読み取る(そしてプロセスで実行する)ための簡単なテストクライアントを使用して、応答を正常に逆シリアル化できますMediaTypeFormatter
。
私が見逃したトリック、見落としたような設定はありますか?問題は、逆シリアル化されたXMLリクエストの値をアクションの引数にバインドしようとすることにあると確信していますが、IActionBinder
その理由についてはこれ以上の情報がありません。