这可能是该框架的 beta 版本中的一个错误,或者我对我的类做了一些非常错误的事情。
我有一个基本模型,我试图通过 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
在此过程中进行练习)。
是否有一些我错过的技巧,一些我忽略的设置?我确信问题在于IActionBinder
尝试将反序列化的 XML 请求中的值绑定到操作的参数,但我没有更多关于原因的信息。