Azure Application Insights中的用户代理信息

Fli*_*ake 5 azure-application-insights

有谁知道为什么在.NET应用程序中实施Application Insights时不会收集用户代理信息,却能够在浏览器中收集统计信息?

我很希望能够针对特定的用户代理字符串过滤掉请求,但是看起来我无法看到带有任何可用数据/表的用户代理。

小智 12

对于 SDK,这不再是自动的。您必须通过创建自定义 TelemetryInitializer 自行包含它。

    public class MyCustomTelemetryInitializer: ITelemetryInitializer
    {
        readonly IHttpContextAccessor _httpContextAccessor;

        public MyCustomTelemetryInitializer(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public void Initialize(ITelemetry telemetry)
        {
            if (telemetry is RequestTelemetry requestTelemetry)
            {
                requestTelemetry.Context.User.UserAgent = _httpContextAccessor.HttpContext.Request.Headers["User-Agent"];
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这将从每个 HttpRequest 中读取用户代理并将其设置为请求遥测的 UserId 字段。

接下来,您需要在应用程序启动期间通过 DI 注册自定义遥测初始化程序(如果您使用的是 ASP .NET core)。

    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
Run Code Online (Sandbox Code Playgroud)


CXu*_*ong 4

看来,如果您对特定的 UA 特别感兴趣,您可能必须自行收集并自行承担风险。

请参阅https://github.com/Microsoft/ApplicationInsights-Announcements/issues/3