【问题标题】:User-agent information in Azure Application InsightsAzure Application Insights 中的用户代理信息
【发布时间】:2018-07-03 12:58:00
【问题描述】:

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

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

【问题讨论】:

    标签: azure-application-insights


    【解决方案1】:

    对于 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.Id = _httpContextAccessor.HttpContext.Request.Headers["User-Agent"];
            }
        }
    }
    

    这会从每个 HttpRequest 中读取 User-Agent,并将其设置为 Request Telemetry 的 UserId 字段。

    接下来,您需要在应用启动期间通过 DI 注册自定义 Telemetry Initializer(如果您使用的是 ASP .NET 核心)。

    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-11-03
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多