2017-12-26 9 views
1

Asp.Net Core unterstützt zwei Möglichkeiten, globale Ausnahmebehandlung für eine Webanwendung, Implementierung von IExceptionFilter oder benutzerdefinierte Middleware zu erstellen. Gibt es einen Vorteil gegenüber dem anderen? Die meisten Referenzen, die ich sehe, sind zum Erstellen von benutzerdefinierten Middleware.Asp.Net Core Web App: Globale Ausnahmebehandlung mit IExceptionFilter vs benutzerdefinierte Middleware

+0

Mögliche Duplikate von [asp.net Core Middleware vs Filter] (https://stackoverflow.com/questions/42582758/asp-net-core-middleware-vs-filters) – Set

Antwort

5

Der ASP.NET-Core docs erklärt die Hauptunterschiede zwischen diesen beiden Ansätzen. Wenn Sie über "Ausnahmefilter" sprechen, lautet der Dokumentstatus:

Ausnahmefilter behandeln nicht behandelte Ausnahmen, die bei der Controllererstellung, Modellbindung, Aktionsfiltern oder Aktionsmethoden auftreten. Sie fangen keine Ausnahmen ein, die in Ressourcenfiltern, Ergebnisfiltern oder MVC-Ergebnisausführung auftreten.

Es gibt sogar Hinweise für die bei Middleware zu verwenden, und wenn „Exception Filter“ zu verwenden:

Exception Filter sind gut für Ausnahmen Trapping, die in MVC Aktionen auftreten, aber sie sind nicht so flexibel wie Fehlerbehandlung Middleware. Ziehen Sie Middleware für den allgemeinen Fall vor und verwenden Sie Filter nur dort, wo Sie die Fehlerbehandlung auf Basis der gewählten MVC-Aktion anders durchführen müssen. Beispielsweise verfügt Ihre App möglicherweise über Aktionsmethoden für API-Endpunkte und für Ansichten/HTML. Die API-Endpunkte könnten Fehlerinformationen als JSON zurückgeben, während die view-basierten Aktionen eine Fehlerseite als HTML zurückgeben könnten.

Verwandte Themen