如何在非 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
等
我有一个名为 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
等