You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何添加客户端版本至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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:20:26