有人知道为什么application Insights在.NET应用程序中实现时不能收集用户代理信息,但能够收集浏览器上的统计数据吗?
我有点希望能够根据特定的用户代理字符串过滤请求,但看起来我无法看到具有任何可用数据/表的用户代理。
发布于 2019-11-07 08:37:17
这在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读取用户代理,并将其设置为请求遥测的UserId字段。
接下来,你需要在应用程序启动时通过DI注册你的自定义遥测初始化器(如果你使用的是.NET核心)。
services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();发布于 2018-09-09 10:05:41
看起来,如果您对某个特定的UA特别感兴趣,您可能必须自己收集它&风险自负。
参见https://github.com/Microsoft/ApplicationInsights-Announcements/issues/3。
https://stackoverflow.com/questions/51155252
复制相似问题