【问题标题】:How to create HttpResponseMessage in a non-APIController如何在非 APIController 中创建 HttpResponseMessage
【发布时间】:2015-09-10 06:47:21
【问题描述】:

我有一个名为 GatewayService 的服务层,它调用另一个 WebApi 来获取产品信息并在响应中操作 Inventory 并返回对调用者的相同响应。

这是我的代码。我遇到的问题是,我不能使用 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!!!
    }
}

【问题讨论】:

    标签: asp.net-web-api httpresponse


    【解决方案1】:

    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等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多