web-dev-qa-db-fra.com

Comment puis-je lever une exception dans un contrôleur WebAPI ASP.NET Core qui renvoie un objet?

Dans Framework WebAPI 2, j'ai un contrôleur qui ressemble à ceci:

[Route("create-license/{licenseKey}")]
public async Task<LicenseDetails> CreateLicenseAsync(string licenseKey, CreateLicenseRequest license)
{
    try
    {
        // ... controller-y stuff
        return await _service.DoSomethingAsync(license).ConfigureAwait(false);
    }
    catch (Exception e)
    {
        _logger.Error(e);
        const string msg = "Unable to PUT license creation request";
        throw new HttpResponseException(HttpStatusCode.InternalServerError, msg);
    }
}

Effectivement, je récupère une erreur 500 avec le message.

Comment puis-je faire quelque chose de similaire dans l'API Web ASP.NET Core?

HttpRequestException ne semble pas exister. Je préférerais continuer à renvoyer l'objet au lieu de HttpRequestMessage.

11
rianjs

Il vaut mieux ne pas intercepter toutes les exceptions dans chaque action. Il suffit d'attraper les exceptions dont vous avez besoin pour réagir spécifiquement et d'attraper (et de boucler vers HttpResponse) tout le reste dans Middleware .

5
Zharro