Exceptions non prises en charge d’un BackgroundService
Dans les versions précédentes, lorsqu’un BackgroundService levait une exception non prise en charge, l’exception était perdue, et le service ne répondait pas. .NET 6 corrige ce comportement en journalisant l’exception et en arrêtant l’hôte.
Description de la modification
Dans les versions précédentes de .NET, lorsqu’une exception était levée à partir d’un remplacement BackgroundService.ExecuteAsync(CancellationToken), l’hôte continuait de s’exécuter, et aucun message n’était journalisé.
À compter de .NET 6, une exception générée à partir d’un remplacement BackgroundService.ExecuteAsync(CancellationToken) est enregistrée dans le ILogger actuel. Par défaut, l’hôte est arrêté en cas d’exception non prise en charge.
Version introduite
.NET 6
Raison du changement
Ce nouveau comportement est cohérent avec celui des autres modèles d’application face à des exceptions non gérées. Il est également déroutant pour les développeurs que leur BackgroundService rencontre une erreur, mais que rien ne soit journalisé. Le meilleur comportement par défaut consiste à arrêter l’hôte, car les exceptions non gérées ne doivent pas être ignorées. Elles indiquent un problème qui mérite une attention particulière.
Action recommandée
Si vous préférez conserver le comportement précédent, qui consiste à autoriser une exception non prise en charge dans un BackgroundService à ne pas arrêter l’hôte, vous pouvez définir HostOptions.BackgroundServiceExceptionBehavior sur BackgroundServiceExceptionBehavior.Ignore.
Host.CreateBuilder(args)
.ConfigureServices(services =>
{
services.Configure<HostOptions>(hostOptions =>
{
hostOptions.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.Ignore;
});
});
API affectées
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour