Wie fange ich alle nicht behandelten Ausnahmen ab, die in ASP.NET Web Api auftreten, damit ich sie protokollieren kann?
Bisher habe ich versucht:
- Erstellen und registrieren Sie eine
ExceptionHandlingAttribute
- Implementieren Sie eine
Application_Error
Methode inGlobal.asax.cs
- Etwas abonnieren
AppDomain.CurrentDomain.UnhandledException
- Etwas abonnieren
TaskScheduler.UnobservedTaskException
Der behandelt ExceptionHandlingAttribute
erfolgreich Ausnahmen, die in Controller-Aktionsmethoden und Aktionsfiltern ausgelöst werden, andere Ausnahmen werden jedoch nicht behandelt, z. B.:
- Ausnahmen, die ausgelöst werden, wenn eine
IQueryable
von einer Aktionsmethode zurückgegebene Methode nicht ausgeführt werden kann - Ausnahmen, die von einem Nachrichtenhandler ausgelöst werden (dh
HttpConfiguration.MessageHandlers
) - Ausnahmen beim Erstellen einer Controller-Instanz
Wenn eine Ausnahme dazu führen soll, dass ein 500 Internal Server Error an den Client zurückgegeben wird, möchte ich, dass er protokolliert wird. Die Implementierung Application_Error
hat diesen Job in Web Forms und MVC gut gemacht - was kann ich in Web Api verwenden?