wake-up-neo.com

Konvertieren Sie in .NET Core von HttpResponseMessage in IActionResult

Ich portiere etwas Code, der zuvor in .NET Framework geschrieben wurde, in .NET Core.

Ich hatte so etwas:

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

Der Rückgabewert dieser Funktion ist jetzt IActionResult.

Wie nehme ich das HttpResponseMessage result-Objekt und gebe eine IActionResult von ihm zurück?

3
noblerare

Sie können mit Hardset-Statuscodes wie Ok(); oder BadRequest(); zurückkehren

Oder kehren Sie mit einer dynamischen zurück

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

Sie sollten in der Lage sein, Ihren vorhandenen Code in ASP.NET Core 2.x mithilfe des Nuget-Pakets Microsoft.AspNetCore.Mvc.WebApiCompatShim zu migrieren.

Dann können Sie tun:

return new ResponseMessageResult(result);

Alternativ können Sie Ihre Controller von ApiController erben und Ihren Code so belassen, wie er ist:

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...
    }    
}

Weitere Informationen in der offiziellen Dokumentation

2
Federico Dipuma

Danke für eure Antworten. Ich bin einen etwas anderen Weg gegangen. Ich denke, der Sinn dieses Codebits bestand darin, dass ich diese Fehlermeldung zurückgeben möchte, wenn SendAsync in irgendeiner Weise fehlschlägt. Stattdessen habe ich es so geändert:

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