2013-10-19 9 views

答えて

6

応答DTOだけを返すことは、基本的にはデフォルトの動作に満足していることを意味し、サービスは応答本体をそのまま返し、要求されたContent-Typeにシリアル化されます。

HttpResultは、レスポンス(HTTPヘッダーなど)に加えて追加のHTTPカスタマイズを追加する必要がある場合に使用しますが、HTTPレスポンス本体のワイヤ形式は変更しません-Typeは、応答がシリアライズされる内容を変更します)。

HttpResultはここで、レスポンスをカスタマイズするただ一つの方法ですが、いくつかの他、次のとおりです。

public class HelloService : Service 
{ 
    public object Get(Hello request) 
    { 
     //1. Returning a custom Response Status and Description with Response DTO body: 
     var responseDto = ...; 
     return new HttpResult(responseDto, HttpStatusCode.Conflict) { 
      StatusDescription = "Computer says no", 
     }; 

     //2. Throw or return a HttpError: 
     throw new HttpError(System.Net.HttpStatusCode.Conflict, "SomeErrorCode"); 

     //3. Modify the Request's IHttpResponse 
     base.Response.StatusCode = (int)HttpStatusCode.Redirect; 
     base.Response.AddHeader("Location", "http://path/to/new/uri"); 
    } 

    //4. Using a Request or Response Filter 
    [AddHeader(ContentType = "text/plain")] 
    public string Get(Hello request) 
    { 
     return "Hello, {0}!".Fmt(request.Name); 
    } 
} 

は、詳細はCustomize HTTP Responses Wikiを参照してください。

+0

迅速な対応をありがとう –

関連する問題