Ich habe einen Versuch fangen in meiner Controller-Aktion Methode und wenn es einen Fehler gibt, möchte ich die Ausnahme.Message an den Client mit der richtigen Methode senden implementiert IActionResult. Wie würde ich das machen?Senden der Ausnahmemeldung an den Client, wenn eine Web-API-Aktion Methode Fehler
Antwort
Sie möchten nur Ausnahmen in Ihrem try/catch abfangen, die Sie im Code elegant behandeln können. Wenn ein interner Serverfehler auftritt, wäre eine 500 die geeignete Antwort.
Sie sollten die Anforderungen validieren, um das 500 zu verhindern, und wenn die Validierung fehlschlägt, können Sie den entsprechenden Statuscode zurückgeben.
Ein sehr allgemeines Beispiel könnte wie folgt aussehen in Web Api 2:
if (validationFailed)
{
return BadRequest("Your request failed because xyz..");
}
Sagen wir in meiner Geschäftslogik ich absichtlich eine Ausnahme in den Code werfen, wenn es einen Setup-Fehler gibt. Ich habe dann diese Ausnahme in meiner Aktionsmethode, weil der Fangteil des Try Catch es fängt. Wie gebe ich dem Client eine Vorstellung davon, worum es sich bei der Ausnahmefehlermeldung handelt? Ist das nicht etwas, was die Leute machen wollen? –
@BlakeRivell Ich habe gerade meine Antwort mit einem Beispiel aktualisiert, das in Web Api 2 funktioniert. – Elliott
Vielleicht möchten Sie sich überlegen, eine Ausnahme anstelle einer anderen Aktion zu werfen. Hier ist eine tolle Lektüre über Ausnahmen von Eric Lippert. https://blogs.msdn.microsoft.com/ericlippert/2008/09/10/vexing-exceptions/ – DunningKrugerEffect
ich versucht habe, durch die gesamte Liste der Suche in HTTP-Methoden gebaut von 1,0 für Web-API-Core und kann nicht herausfinden, wie man richtig Bei einem 500-Server-Fehler wird eine Ausnahmebedingung an den Client zurückgegeben. Ich kann nichts bei Google finden, also gehe ich davon aus, dass Leute das nicht tun ... –
Sie müssen leider selbst etwas bauen. Sieh dir das an: http://jameschambers.com/2014/06/day-14-bootstrap-alerts-and-mvc-framework-tempdata/ – DunningKrugerEffect
@DunningKrugerEffect du meinst mir zu sagen, dass es keine Möglichkeit gibt, eine Fehlermeldung zurückzusenden ? –