在.NET Core中从HttpResponseMessage转换为IActionResult

时间:2018-08-01 20:17:07

标签: c# .net asp.net-core

我正在将以前在.NET Framework中编写的一些代码移植到.NET Core。

我有这样的东西:

HttpResponseMessage result = await client.SendAync(request);
if (result.StatusCode != HttpStatusCode.OK)
{
    IHttpActionResult response = ResponseMessage(result);
    return response;
}

此函数的返回值现在为IActionResult

如何获取HttpResponseMessage result对象并从中返回IActionResult

3 个答案:

答案 0 :(得分:2)

您可以使用Ok();BadRequest();之类的固定状态代码返回

或使用动态返回的

StatusCode(<Your status code number>,<Optional return object>);

答案 1 :(得分:2)

您应该能够使用Microsoft.AspNetCore.Mvc.WebApiCompatShim nuget软件包将现有代码迁移到ASP.NET Core 2.x中。

然后您可以这样做:

return new ResponseMessageResult(result);

或者,您也可以从Controller继承ApiController并将代码保持原样:

public class MyController : ApiController 
{
    public IActionResult Get()
    {
        // other code...
        HttpResponseMessage result = await client.SendAync(request);
        if (result.StatusCode != HttpStatusCode.OK)
        {
            IActionResult response = ResponseMessage(result);
            return response;
        }
        // other code...
    }    
}

official documentation

中的更多信息

答案 2 :(得分:0)

谢谢大家的回答。我走的路线略有不同。我猜想那段代码的重点是,如果SendAsync以任何方式失败,我想返回该错误消息。因此,我改为将其更改为:

if (result.StatusCode != HttpStatusCode.OK)
{
    return BadRequest(result.ReasonPhrase);
}