2

次のアクションメソッドがあります。

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

「application/json」のコンテンツタイプを使用してアイテムをPOST/PUT / PATCHすると、jsonペイロードのキーと値のペアを表す上記のメソッドでnull以外のアイテムが取得されますが、コンテンツタイプを「application」に変更すると/ xml "を実行し、JSONペイロードの代わりに本文でXMLペイロードを送信します。アイテムの"null"を取得します。

なんで?

4

1 に答える 1

2

JSON を渡すと機能する理由は、WebAPI がデフォルトの JSON シリアライザーとして JSON.NET を使用するためです。JSON.NET は動的オブジェクトをサポートしています。

WebAPI は、既定で XML シリアル化に DataContractSerializer を使用します。残念ながら、動的オブジェクトはサポートされていません。これがあなたの問題を引き起こしていると思います。基本クラス ライブラリは、WebAPI でも使用できる XmlSerializer という別の xml シリアライザーを提供しますが、動的オブジェクトもサポートしていません。

于 2013-03-24T00:23:02.893 に答える