(驚いたことに) XML と JSON を受け入れる必要がある Web API サービスがあります。まず、モデルは次のとおりです。
[DataContract]
public class SerializedCustomerEvent
{
[DataMember]
public string TypeID { get; set; }
[DataMember]
public ContextPair[] Context { get; set; }
}
public class ContextPair
{
public string Key { get; set; }
public string Value { get; set; }
}
API コントローラーのメソッドは次のとおりです。
public void Post(SerializedCustomerEvent value)
{
_queueBroker.Queue(value);
}
ここで、私が何かを見落としている部分があります。Fiddler からの JSON 投稿は正常に機能します。
Content-Type: application/json; charset=utf-8
{
"TypeID":"ABC",
"Context":
[
{"Key":"Field1","Value":"123"},
{"Key":"Field2","Value":"Jeff"}
]
}
ただし、XML バージョンは機能しません。Context プロパティは常に null です。
Content-Type: application/xml; charset=utf-8
<?xml version="1.0"?>
<SerializedCustomerEvent xmlns="http://schemas.datacontract.org/2004/07/MyNamespace">
<TypeID>XMLWow</TypeID>
<Context>
<ContextPair>
<Key>Field1</Key>
<Value>123</Value>
</ContextPair>
<ContextPair>
<Key>Field2</Key>
<Value>Jeff</Value>
</ContextPair>
</Context>
</SerializedCustomerEvent>
ここで何が欠けていますか?