2015-09-09 37 views
0

創建HttpResponseMessage我有一個名爲GatewayService一個服務層,它調用另一個的WebAPI獲取產品信息和操縱庫存在響應並返回給調用者同樣的反應。如何在非APIController

這是我的代碼。我的問題是,我不能使用Request.CreateResponse(...)這將給我一個編譯錯誤,因爲GatewayService不繼承ApiController

有沒有辦法更新響應並返回HttpResponseMessage?

public class GatewayService 
{ 
    // Code Removed for bravity 

    public HttpResponseMessage Get(SingleProductSearcRequest request) 
    { 
     var response = productServiceWebApi.Get(request); // Returns HttpResponseMessage 

     var p = response.Content.ReadAsAsync<JObject>().Result; 

     p["Inventory"] = "Not Available"; 

     return Request.CreateResponse(p); // COMPILER ERROR!!! 
    } 
} 

回答

2

Request.CreateResponse()僅僅是HttpRequest的擴展方法。您可以手動構建一個HttpResponseMessage以及給它的內容做一樣的東西:

var p = response.Content.ReadAsAsync<JObject>().Result; 

HttpResponseMessage message = new HttpResponseMessage(System.Net.HttpStatusCode.OK); 
message.Content = new ObjectContent(p); 

您可以通過爲好,如果有必要轉移頭和其他信息。根據需要,還有StringContent等。