首页 > 解决方案 > Azure Application Insights 中的用户代理信息

问题描述

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

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

标签: azure-application-insights

解决方案


对于 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 注册您的自定义遥测初始化程序(如果您使用的是 ASP .NET 核心)。

services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();

推荐阅读