如何添加客户端版本至HTTPS请求并同步到Azure Application Insights的customDimensions
将客户端版本信息加入Application Insights的customDimensions
你的思路完全可行——通过请求头传递客户端版本,再在后端将其同步到Application Insights的customDimensions是非常合理的方案,以下是具体实现步骤:
一、客户端添加请求头
在C#客户端调用后端接口时,添加自定义请求头(比如X-Client-Version)携带版本信息:
// 示例:使用HttpClient时添加请求头 using var client = new HttpClient(); // 可从应用程序配置或程序集信息中获取版本号 string clientVersion = typeof(Program).Assembly.GetName().Version.ToString(); client.DefaultRequestHeaders.Add("X-Client-Version", clientVersion); // 发起请求 var response = await client.GetAsync("https://your-azure-webapp-url/api/endpoint");
二、后端配置:将请求头同步到customDimensions
在ASP.NET Core后端,通过TelemetryInitializer实现将请求头值注入到Application Insights的请求遥测中,这是官方推荐的自定义遥测属性的方式:
1. 创建自定义TelemetryInitializer
新建一个类实现ITelemetryInitializer接口:
using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.Extensibility; using Microsoft.AspNetCore.Http; public class ClientVersionTelemetryInitializer : ITelemetryInitializer { private readonly IHttpContextAccessor _httpContextAccessor; public ClientVersionTelemetryInitializer(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void Initialize(ITelemetry telemetry) { // 仅处理请求遥测 if (telemetry is RequestTelemetry requestTelemetry) { var httpContext = _httpContextAccessor.HttpContext; if (httpContext != null && httpContext.Request.Headers.TryGetValue("X-Client-Version", out var clientVersion)) { // 将版本信息加入customDimensions,键名可自定义 requestTelemetry.Properties["ClientVersion"] = clientVersion.ToString(); } } } }
2. 注册TelemetryInitializer
在Program.cs中注册这个初始化器(需在添加Application Insights服务之后注册):
var builder = WebApplication.CreateBuilder(args); // 添加Application Insights服务 builder.Services.AddApplicationInsightsTelemetry(); // 注册自定义TelemetryInitializer builder.Services.AddSingleton<ITelemetryInitializer, ClientVersionTelemetryInitializer>(); // 确保注册IHttpContextAccessor(若项目未注册) builder.Services.AddHttpContextAccessor(); var app = builder.Build(); // 其他中间件配置... app.Run();
三、验证结果
部署后端后,在Azure Application Insights的日志查询中,使用以下语句即可查看携带客户端版本的请求数据:
requests | where customDimensions.ClientVersion != "" | project timestamp, name, url, customDimensions.ClientVersion, resultCode
内容的提问来源于stack exchange,提问作者Claus Appel
相关产品推荐
相关产品推荐

