如何在 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 函数?