Je porte un code précédemment écrit dans .NET Framework vers .NET Core.
J'ai eu quelque chose comme ça:
HttpResponseMessage result = await client.SendAync(request);
if (result.StatusCode != HttpStatusCode.OK)
{
IHttpActionResult response = ResponseMessage(result);
return response;
}
La valeur de retour de cette fonction est maintenant IActionResult
.
Comment puis-je prendre l'objet HttpResponseMessage result
et renvoyer une IActionResult
à partir de celui-ci?
Vous pouvez retourner en utilisant des codes d'état tels que Ok();
ou BadRequest();
Ou retourner en utilisant un dynamique en utilisant
StatusCode(<Your status code number>,<Optional return object>);
Vous devriez pouvoir migrer votre code existant dans ASP.NET Core 2.x à l'aide de Microsoft.AspNetCore.Mvc.WebApiCompatShim nuget.
Ensuite, vous pouvez faire:
return new ResponseMessageResult(result);
Sinon, vous pouvez également hériter de votre Controller
de ApiController
et laisser votre code tel quel:
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...
}
}
Plus d'informations dans la documentation officielle
Merci pour vos réponses tout le monde. J'ai emprunté un itinéraire légèrement différent. Je suppose que le point essentiel de ce code était que, si la variable SendAsync
échoue de quelque manière que ce soit, je souhaite renvoyer ce message d'erreur. Alors au lieu de cela, j'ai changé pour que ce soit quelque chose comme:
if (result.StatusCode != HttpStatusCode.OK)
{
return BadRequest(result.ReasonPhrase);
}