web-dev-qa-db-fra.com

Comment identifier de manière unique chaque demande dans une application ASP.NET Core 2 (pour la journalisation)

Dans une application ASP.NET Core 2, j'ai besoin d'un identifiant unique (par exemple Guid) pour chaque demande afin de pouvoir inclure cet identifiant dans chaque journal et comprendre la séquence des journaux de chaque demande.

Ce n'est pas difficile de l'écrire moi-même, mais je me demande s'il existe une fonctionnalité intégrée que je peux utiliser ou une façon d'ASP.NET Core 2 pour y parvenir.

12
Victor

Vous pouvez utiliser System.Diagnostics.Activity classe ( source ). De Guide d'utilisation de l'activité

Activity.Id sert d'ID de demande hiérarchique en termes de protocole de corrélation HTTP

Ceci est utilisé par exemple par Microsoft/ApplicationInsights-aspnetcore pour la surveillance des applications.

10
Set

ASP.NET Core a également HttpContext.TraceIdentifier qui identifie de manière unique la demande en cours.

Il est généré pour chaque demande entrante par Kestrel, il ne convient donc pas pour corréler les appels à un service d'un autre, mais convient pour corréler les journaux pour une seule demande ensemble, ou pour corréler un message d'erreur qui pourrait être affiché pour l'utilisateur avec les journaux correspondants.

10
Andrew

On dirait que vous cherchez un identifiant de corrélation . Peut-être Correlation ID Middleware serait utile?

1
Mark G