Comment intercepter toutes les exceptions non gérées qui se produisent dans l'API Web ASP.NET afin de pouvoir les consigner?
Jusqu'à présent, j'ai essayé:
- Créer et enregistrer un
ExceptionHandlingAttribute
- Implémenter une
Application_Error
méthode dansGlobal.asax.cs
- S'abonner à
AppDomain.CurrentDomain.UnhandledException
- S'abonner à
TaskScheduler.UnobservedTaskException
Le ExceptionHandlingAttribute
gère avec succès les exceptions qui sont levées dans les méthodes d'action du contrôleur et les filtres d'action, mais les autres exceptions ne sont pas gérées, par exemple:
- Exceptions levées lorsqu'un
IQueryable
retourné par une méthode d'action échoue à s'exécuter - Exceptions levées par un gestionnaire de messages (ie
HttpConfiguration.MessageHandlers
) - Exceptions levées lors de la création d'une instance de contrôleur
Fondamentalement, si une exception va provoquer le renvoi d'une erreur de serveur interne 500 au client, je veux qu'elle soit enregistrée. La mise en œuvre Application_Error
a bien fonctionné dans Web Forms et MVC - que puis-je utiliser dans Web Api?