如何在非 APIController 中创建 HttpResponseMessage

How to create HttpResponseMessage in a non-APIController

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

这是我的代码。我遇到的问题是,我不能使用 Request.CreateResponse(...) 这会给我一个编译错误,因为 GatewayService不继承ApiController.

有没有办法将响应和 return 更新为 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!!!
    }
}

Request.CreateResponse()只是HttpRequest的扩展方法。您可以手动构造一个 HttpResponseMessage 并通过执行以下操作为其提供内容:

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

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

如有必要,您也可以传送headers 和其他信息。根据需要,还有StringContent