【问题标题】:How to set HttpResponse to HttpResponseMessage in Web API如何在 Web API 中将 HttpResponse 设置为 HttpResponseMessage
【发布时间】: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 中。

标签: c# asp.net-web-api


【解决方案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");  
       }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2010-10-16
      • 2016-07-21
      • 2013-12-03
      • 2015-02-21
      • 2017-07-02
      相关资源
      最近更新 更多