0

Accept以下の単純な Action メソッドは、ヘッダーが に設定されているかどうかに関係なく、常に JSON を返しますapplication/xml。コンテンツ ネゴシエーションは、この同じコントローラーにある他のアクションでも正常に機能します。

public HttpResponseMessage GetOrder(int id) {
    var orderDescription = mydbc.tbl_job_versions.AsNoTracking().Where(t => t.JobId == id)
      .Select(t => new{Id = t.JobId,  Description = t.Brand + " " + t.Variety + " " + t.Promotion  + " " + t.MarketSegment }).FirstOrDefault ();

    if (orderDescription == null) {
      return new HttpResponseMessage(HttpStatusCode.NotFound);
    }
    else {
      return Request.CreateResponse((HttpStatusCode)200, orderDescription);
    }
 }

これがコンテンツ ネゴシエーションを実行せず、代わりに常に JSON を返す原因は何ですか?

4

2 に答える 2

0

ここで私の答えを確認できます: https://stackoverflow.com/a/22918118/1184056

xml フォーマッタは、指定したオブジェクトを書き込むことができるとは言えないため、json で応答が表示されないようです。

于 2015-03-05T16:11:20.313 に答える
0

WEB API のコンテンツ ネゴシエーションでは、匿名型の XML へのシリアル化を処理できず、JSON のみを処理できることがわかりました。クラスを作成し、LINQ データからデータを入力して返すと、XML を要求すると XML が返されます。

さらに調べてみると、codeplex http://aspnetwebstack.codeplex.com/workitem/2123で問題が見つかりました。

于 2015-03-05T16:12:12.303 に答える