如何在 Web API 中将 HttpResponse 设置为 HttpResponseMessage

Posted

技术标签:

【中文标题】如何在 Web API 中将 HttpResponse 设置为 HttpResponseMessage【英文标题】:How to set HttpResponse to HttpResponseMessage in Web API 【发布时间】:2017-06-28 14:07:05 【问题描述】:

我有一个使用 OWIN 托管的 asp.net web API 应用程序。 Web API 应用程序使用依赖于System.Web 的外部库并将其响应写入 System.Web.Response 对象。我已经将一个虚拟对象设置为HttpContext.Current,之后我希望外部库会将响应设置为HttpRequest。然后我需要知道如何将结果从HttpRequest 传输到HttpRequestMessage,以便网络API 方法可以处理结果。

这里是一些示例代码:

public HttpResponseMessage GetTest()

    HttpResponseMessage responseMessage = new HttpResponseMessage();

    HttpResponse httpResponse = new HttpResponse(new StreamWriter(new MemoryStream()));
    httpResponse.Write("From HttpResponse");

    return responseMessage;

我已经使用HttpResponse.Write() 方法编写了一些文本,现在我需要将结果从HttpResponse 移动到HttpResponseMessage

【问题讨论】:

您可能需要发布一些代码。 可能只有我......我仍然无法得到你想要的东西。在您的问题中,您谈到将结果从 Request 传输到 HttpResponseMessage。 结果“From HttpResponse”设置在 HttpResponse 对象中,但是 web api 使用 HttpResponseMessage 来响应客户端。所以我需要知道如何从 HttpResponse 读取响应并将其设置为 HttpResponseMessage。 你在使用 MVC 吗? 如果需要,我们可以使用 MVC,但我们不能使用 System.Web,因为我们的应用程序是使用 OWIN 托管的,而不是托管在 IIS 中。 【参考方案1】:

我相信您正在寻找的是 IHttpActionResult 参见链接: https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/action-results

这是一个如何创建 HttpResponseMessage 的示例:

public IHttpActionResult Get()

   HttpResponseMessage responseMessage = "From HttpResponse";
   return new ResponseMessageResult(responseMessage);

【讨论】:

【参考方案2】:

试试:

return Request.CreateResponse(HttpStatusCode.OK, "data to return here")

【讨论】:

显然如果请求失败,返回相应的状态码而不是“OK”【参考方案3】:

你可以尝试如下:

   if (yourCondition)  
     
      return Request.CreateResponse<Employee>(HttpStatusCode.OK, obj);  
     
   else  
     
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Not Found");  
     

【讨论】:

以上是关于如何在 Web API 中将 HttpResponse 设置为 HttpResponseMessage的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# EF 核心 web api 中将列表转换为 Json

如何在 Web Audio API 中将 SoundManager2 定义为媒体元素源

如何在 MVC Web API 发布方法中将 ModelState 错误返回到 Kendo 网格?

如何在 ASP.NET Web API 实现中将数组传递给 OData 函数?

如何在asp.net web api中将图像路径转换为http url?

http协议