Asp.net web api 如何在非APIController中创建HttpResponseMessage
我有一个名为GatewayService的服务层,它调用另一个WebApi来获取产品信息,并在响应中操作库存,然后将相同的响应返回给调用者 这是我的密码。我遇到的问题是,我不能使用Request.CreateResponse(…),这将给我一个编译错误,因为网关服务不继承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
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
等