2

我有以下操作方法:

  public HttpResponseMessage Put(int id, dynamic item)
    {
    }
    public HttpResponseMessage Post(object item)
    {            
    }
    public HttpResponseMessage Patch(intid, dynamic item)
    {            
    }

如果我使用“应用程序/json”的内容类型发布/放置/修补一个项目,我会在上述方法中得到一个非空项目,表示 json 有效负载的键值对,但是,如果我将内容类型更改为“应用程序/xml”并在正文中发送 XML 有效负载而不是 JSON 有效负载我得到该项目的“null”。

为什么?

4

1 回答 1

2

传递 JSON 时它起作用的原因是 WebAPI 使用 JSON.NET 作为其默认的 JSON 序列化程序。JSON.NET 支持动态对象。

WebAPI 默认使用 DataContractSerializer 进行 XML 序列化。不幸的是,它不支持动态对象。我猜这是导致您的问题的原因。基类库提供了另一个名为 XmlSerializer 的 xml 序列化器,它也可以与 WebAPI 一起使用,但它也不支持动态对象。

于 2013-03-24T00:23:02.893 回答