2012-09-28 19 views
13

タイプを返す違いは何ですか?MVC 4 Web APIアクションリターン:タイプ対HttpResponseMessage

public class MyController : ApiController 
    { 
     public IEnumerable<MyType> Get()... 

HttpResponseMessageを返す:

public class MyController : ApiController 
    { 
     public HttpResponseMessage Get()... 

MVCはHttpResponseMessageコンテンツオブジェクトに型をラップしますか?フォーマッタが明示的に追加された場合以外は、ページ上の結果は同じように見えます。

クライアントとの違いは何ですか?

答えて

16

違いはありません。

CLR型を返すと、とにかにHttpResponseMessageで折り返されます。

唯一の違いは、HttpResponseMessageを返すと、HTTPで直接作業できるため、ヘッダーを設定できるので、MediaTypeFormattersなどをバイパスすることができます。

すべての個人的な好みやあなたの行動で実行されている活動の問題です。

+0

ありがとうございます。私はそれを考え出しました。 'HttpResponseMessage'を返すことで、レスポンスに含まれる可能性のあるあらゆる種類のサービスに柔軟性がもたらされます。 –

+1

新しいヘルプページジェネレーター機能を使用している場合、実際には少し違いがあります。 HttpResponseMessageの場合、戻り型を判別することができないため、サンプルデータは生成されません。少なくともこれは「ASP.NET Fall 2012 Update BUILD Preview」の場合に当てはまります – mdonatas

+1

@mdonatas HttpResponseMessageは、ヘルプジェネレータの能力を覆すことを本当にうまくやっているようです。以前はHttpResponseMessage の汎用性がありましたが、 "型の安全性"の理由で削除されました。 - http://aspnetwebstack.codeplex.com/discussions/355170 – Snixtor

関連する問題