Asp.net web api 如何在非APIController中创建HttpResponseMessage

Asp.net web api 如何在非APIController中创建HttpResponseMessage,asp.net-web-api,httpresponse,Asp.net Web Api,Httpresponse,我有一个名为GatewayService的服务层,它调用另一个WebApi来获取产品信息,并在响应中操作库存,然后将相同的响应返回给调用者 这是我的密码。我遇到的问题是,我不能使用Request.CreateResponse(…),这将给我一个编译错误,因为网关服务不继承ApiController 有没有办法更新响应并作为HttpResponseMessage返回 public class GatewayService { // Code Removed for bravity

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

这是我的密码。我遇到的问题是,我不能使用Request.CreateResponse(…),这将给我一个编译错误,因为网关服务不继承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!!!
    }
}
公共类网关服务
{
//删除bravity的代码
公共HttpResponseMessage获取(SingleProductSearcRequest请求)
{
var response=productServiceWebApi.Get(请求);//返回HttpResponseMessage
var p=response.Content.ReadAsAsync().Result;
p[“库存”]=“不可用”;
返回请求。CreateResponse(p);//编译器错误!!!
}
}

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

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

HttpResponseMessage message = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
message.Content = new ObjectContent(p);
var p=response.Content.ReadAsAsync().Result;
HttpResponseMessage=新的HttpResponseMessage(System.Net.HttpStatusCode.OK);
message.Content=新对象内容(p);
如有必要,您还可以通过网络传输标题和其他信息。根据需要,还有
StringContent