Добавление тега в контекст ActivityContext запроса ASP.NET
Я хотел бы добавить тег в ActivityContext для запроса ASP.NET, как только начнется обработка запроса. Есть ли способ получить доступ к ActivitySource для конвейера запросов и добавить к нему слушателя?
В настоящее время я думаю об использовании промежуточного программного обеспечения Pipeline, но должен быть более легкий способ. Особенно тот, где другие разработчики не могут добавить никаких других обработчиков промежуточного программного обеспечения до этого. Любые идеи?
2 ответа
Похоже, вы можете добавить его через DI при запуске. Главное - это название
ActivitySource
. Я не нашел его ни в одной документации. Мне пришлось через пролезтькод aspnetcore .
В любом слючае ...
Добавьте следующее в
ConfigureServices(...)
:
services.AddSingleton(new ActivitySource("Microsoft.AspNetCore"));
Добавить
ActivitySource activitySource
параметр в Configure(...) и следующий в теле:
var requestActivityListener= new ActivityListener();
requestActivityListener.ShouldListenTo = activitySource => true;
requestActivityListener.ActivityStarted = activity => LetsShapeThisActivityToOurLiking(activity);
ActivitySource.AddActivityListener(requestActivityListener);
Так и должно быть.
Похоже, вы можете добавить его через DI при запуске. Главное - это название
ActivitySource
. Я не нашел его ни в одной документации. Мне пришлось пролистать код aspnetcore, и похоже, что регистрирует пустое имя ActivitySource для
DiagnosticListener
.
В любом слючае ...
Добавьте следующее в
Configure(...)
:
var requestActivityListener= new ActivityListener();
requestActivityListener.ShouldListenTo = activitySource => activitySource.Name == "";
requestActivityListener.ActivityStarted = activity => LetsShapeThisActivityToOurLiking(activity);
ActivitySource.AddActivityListener(requestActivityListener);
Так и должно быть.