我有以下行动方法:
public HttpResponseMessage Put(int id, dynamic item)
{
}
public HttpResponseMessage Post(object item)
{
}
public HttpResponseMessage Patch(intid, dynamic item)
{
}
如果我使用“application / json”的内容类型POST / PUT / PATCH一个项目,我在上面的方法中得到一个非空项目,表示json有效负载的keyvalue对,但是,如果我改变了内容类型到“application / xml”并在正文中发送XML有效负载而不是JSON有效负载我得到该项的“null”。
为什么?
答案 0 :(得分:1)
传递JSON时它起作用的原因是因为WebAPI使用JSON.NET作为其默认的JSON序列化程序。 JSON.NET支持动态对象。
WebAPI默认使用DataContractSerializer进行XML序列化。不幸的是,它不支持动态对象。我猜这是导致你的问题。基类库提供了另一个名为XmlSerializer的xml序列化程序,它也可以与WebAPI一起使用,但它也不支持动态对象。