Отвечая на мой вопрос для полноты. Код, приведенный в вопросе, работает отлично. Я просто добавлю его сюда снова.
Чтобы получить ASP. NET Идентификационное имя пользователя Core в вашем Application Insights, вам нужен пользовательский инициализатор телеметрии Пожалуйста, обратитесь к исходному ответу @PeterBons здесь
public class TelemetryEnrichment : TelemetryInitializerBase
{
public TelemetryEnrichment(IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
{
}
protected override void OnInitializeTelemetry(HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry)
{
telemetry.Context.User.AuthenticatedUserId =
platformContext.User?.Identity.Name ?? string.Empty;
}
}
Затем вам нужно зарегистрировать его в своем Startup.cs ConfigureServices
, как показано ниже:
public void ConfigureServices(IServiceCollection services)
{
...
...
services.AddApplicationInsightsTelemetry();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<ITelemetryInitializer, TelemetryEnrichment>();
...
...
}
Не забудьте поставить AddApplicationInsightsTelemetry()
над AddSingleton()
. После того, как это настроено, идентификационное имя пользователя отображается в свойстве Auth User ID
в Application Insights.