Comment puis-je attraper todo les exceptions non gérées qui se produisent dans ASP.NET Web Api afin que je puisse les consigner ?
Jusqu'à présent, j'ai essayé :
- Créer et enregistrer un
ExceptionHandlingAttribute
- Mettre en œuvre un
Application_Error
méthode dansGlobal.asax.cs
- S'abonner à
AppDomain.CurrentDomain.UnhandledException
- S'abonner à
TaskScheduler.UnobservedTaskException
El ExceptionHandlingAttribute
traite avec succès les exceptions qui sont lancées dans les méthodes d'action et les filtres d'action du contrôleur, mais d'autres exceptions ne sont pas traitées, par exemple :
- Exceptions déclenchées lorsqu'une
IQueryable
retourné par une méthode d'action ne s'exécute pas - Les exceptions lancées par un gestionnaire de messages (c'est-à-dire
HttpConfiguration.MessageHandlers
) - Exceptions lancées lors de la création d'une instance de contrôleur
En gros, si une exception doit entraîner le renvoi d'une erreur de serveur interne 500 au client, je veux qu'elle soit enregistrée. Mise en œuvre de Application_Error
Ce travail a bien fonctionné dans Web Forms et MVC - que puis-je utiliser dans Web Api ?
0 votes
Avez-vous essayé d'utiliser Surveillance de la santé d'ASP.NET ? Activez-la et voyez si vos exceptions ne sont pas enregistrées dans le journal des événements.
0 votes
La surveillance de la santé détecte les exceptions de mon pipeline MVC, mais pas celles de mon pipeline Web Api.
0 votes
Merci - Il m'a fallu un certain temps pour comprendre pourquoi je ne pouvais pas enregistrer mes problèmes de constructeur / d'injection de dépendances, alors que je pensais que l'enregistrement WebAPI était déjà réglé...