Intergiciel : l’intergiciel du gestionnaire d’exceptions lève l’exception d’origine si le descripteur est introuvable

Avant ASP.NET Core 5.0, l’intergiciel du gestionnaire d’exceptions exécute le gestionnaire d’exceptions configuré lorsqu’une exception s’est produite. Si le gestionnaire d’exceptions, configuré via ExceptionHandlingPath, est introuvable, une réponse HTTP 404 est générée. La réponse est trompeuse en ce qu’elle :

  • semble être une erreur utilisateur
  • masque le fait qu’une exception s’est produite sur le serveur.

Pour résoudre l’erreur trompeuse dans ASP.NET Core 5.0, le ExceptionHandlerMiddleware lève l’exception d’origine si le gestionnaire d’exceptions est introuvable. Par conséquent, une réponse HTTP 500 est générée par le serveur. La réponse sera plus facile à examiner dans les journaux du serveur lors du débogage de l’erreur qui s’est produite.

Pour plus d’informations, consultez le problème GitHub dotnet/aspnetcore#25288.

Version introduite

5.0 RC 1

Ancien comportement

L’intergiciel du gestionnaire d’exceptions génère une réponse HTTP 404 si le gestionnaire d’exceptions configuré est introuvable.

Nouveau comportement

L’intergiciel du gestionnaire d’exceptions lève l’exception d’origine si le gestionnaire d’exceptions configuré est introuvable.

Raison du changement

L’erreur HTTP 404 ne rend pas évident qu’une exception s’est produite sur le serveur. Ce changement génère une erreur HTTP 500 pour rendre évident que :

  • le problème n’est pas dû à une erreur utilisateur
  • une exception a été rencontrée sur le serveur

il n’y a aucun changement de l’API toutes les applications existantes continueront à être compilées et exécutées l’exception levée est gérée par le serveur. Par exemple, l’exception est convertie en réponse d’erreur HTTP 500 par Kestrel ou HTTP.sys.

API affectées

None