32

Get リクエストの 1 つで、コンテンツを含む HttpResponseMessage を返したいと考えています。現在、次のように動作しています。

var header = new MediaTypeHeaderValue("text/xml");
Request.CreateResponse(HttpStatusCode.OK, myObject, header);

ただし、静的な Request を使用しているため、これをテストするのは非常に困難です。私が読んだことから、私は次のことができるはずです:

return new HttpResponseMessage<T>(objectInstance);

ただし、これができないようです。古いバージョンの WebApi / .NET を使用しているためですか?


ちなみに、次のように応答を作成できる可能性があることがわかりました。

var response = new HttpResponseMessage();
response.Content = new ObjectContent(typeof(T), objectInstance, mediaTypeFormatter);

私を困惑させたのは、なぜここに mediaTypeFormatter を追加しなければならないのかということです。global.asax レベルでメディア タイプ フォーマッタを追加しました。

ありがとう!

4

1 に答える 1

65

HttpResponseMessage<T>ベータ後に削除されました。現在、typed の代わりに typedHttpResponseMessageがありますObjectContent

デフォルトのパラメーターなしのコンストラクターを使用して手動で作成する場合HttpResponseMessage、コンテンツ ネゴシエーションを実行するために使用できるリクエスト コンテキストがありません。そのため、フォーマッターを指定するか、手動でコンテンツ ネゴシエーションを実行する必要があります。

私はあなたがそれをしたくないことを理解しています-代わりにこれを使用してください:

HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);

これにより、要求に対して実行されたコンテンツ ネゴシエーションに依存する応答メッセージが作成されます。

最後に、コンテンツ ネゴシエーションの詳細については、こちらのリンクを参照してください。

于 2012-09-24T12:03:35.457 に答える