Azure Application Insights中的用户代理信息

时间:2018-07-03 12:58:01

标签: azure-application-insights

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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 Core)。

services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();