Ausnahmebehandlung in der Web-API

8

In meinem Web-API-Projekt habe ich Unterprojekte (Klassenbibliotheken) erstellt, in denen ich die eigentlichen Datenverarbeitungsvorgänge handhabe. Meine Backend-Datenbank ist DocumentDB.

Meine Frage ist, wie ich meinen Web-API-Aktionsmethoden alle Fehler mitteilen kann, die ich in den Datenmethoden in meinen Klassenbibliotheken feststellen kann? Sobald meine Web-API-Methode über den Fehler informiert, kann ich einfach den Http-Status 500 oder etwas Ähnliches zurückgeben, aber ich bin nicht sicher, was ich im Catch-Teil (siehe unten) haben sollte und wie ich die aufrufende Web-API-Methode benachrichtigen kann Der Fehler ist aufgetreten?

--- Web-API-Methode ---

%Vor%

--- Klassenbibliothekscode ---

%Vor%     
Sam 25.11.2014, 21:52
quelle

3 Antworten

8

ASP.NET Web API 2.1 bieten Framework-Unterstützung für die globale Behandlung von nicht behandelten Ausnahmen.

Ermöglicht die Anpassung der HTTP-Antwort, die gesendet wird, wenn eine nicht behandelte Anwendungsausnahme auftritt.

Erhalte also keine Ausnahme in der Klassenbibliothek. Wenn Sie eine Ausnahme in der Klassenbibliothek protokollieren müssen, werfen Sie diese Ausnahme erneut auf Präsentation.

WebApiConfig

%Vor%

GlobalExceptionHandler

%Vor%

CustomErrorResult

%Vor%

Guthaben für ASP.NET Web API 2: Erstellen eines REST-Service von Start bis Ende und Quellcode .

    
Win 25.11.2014 22:09
quelle
1

Die Fehlerbehandlung hängt von Ihrer Logik und davon ab, wie Ihre API auf ihre Konsumenten reagiert.

Grundsätzlich müssen Sie HTTP-Statuscodes entsprechend dem Fehlertyp verwenden.

In Ihren Datenzugriffs- und Business-Schicht-Methoden können Sie sich auf den Rückgabetyp verlassen. Wenn beispielsweise in allen Methoden, die die Datenbank abfragt, das Objekt nicht vorhanden ist, können Sie NULL zurückgeben, und in Ihrer Web-API, wenn die Methode NULL zurückgibt, geben Sie einfach NotFound() zurück, das auf den Client mit einem 404 antwortet .

Was die Ausnahmen betrifft:

Sie können Fehlercodes in Ihrer Geschäfts- und Datenzugriffsebene verwenden und in Ihren Web-API-Aktionen nach diesen Codes suchen. Dann geben Sie einen entsprechenden Statuscode entsprechend zurück. Bsp .: Geben Sie einen Statuscode von 500 zurück, wenn ein Verbindungsproblem mit der Datenbank aufgetreten ist, oder geben Sie 400 (Falsche Anfrage) zurück, wenn der Benutzer nicht alle erforderlichen Aktionsparameter im richtigen Format angegeben hat.

Im Falle einer anderen Ausnahme, die Sie nicht abgefangen haben, können Sie mit dem globalen Ausnahme-Handler gehen, der von @Win

beschrieben wird     
Haitham Shaddad 21.12.2016 08:04
quelle
0

Wenn Sie den Fehler in Ihrer Konsolenanwendung abfangen und protokollieren möchten, den Fehler jedoch trotzdem an den Aufrufer weiterleiten möchten, verwenden Sie throw; am Ende Ihrer Fanganweisung in Ihrer Konsolenanwendung.

Es wird dieselbe Ausnahme für den Aufrufer erneut ausgelöst, so dass Ihre Anwendung die Ausnahme sowohl im "Aufrufer" als auch im "Aufrufer" erkennen kann.

    
Piou 21.12.2016 07:29
quelle