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

从Microsoft.Rest.ClientRuntime迁移至Azure.Core的方法及追踪类替代方案

从Microsoft.Rest.ClientRuntime迁移到Azure.Core的追踪替代方案

问题背景

项目依赖的Microsoft.Rest.ClientRuntime(最新版本2.3.24)已被标记为弃用,官方推荐迁移至Azure.Core包。需要替换原基于ServiceClientTracing的追踪逻辑,示例代码如下:

bool _traced = ServiceClientTracing.IsEnabled;
string _id = null;
if (_traced)
{
    _id = ServiceClientTracing.NextInvocationId.ToString();
    Dictionary<string, object> _params = new Dictionary<string, object>();
    _params.Add("someKey", someKey);
    _params.Add("someToken", someToken);
    ServiceClientTracing.Enter(_id, this, "AddPowerBIEncryptionKey", _params);
}
// 后续逻辑...

替代方案

Azure.Core的诊断追踪依赖标准.NET的System.Diagnostics.Activity框架,对应替代组件是ActivitySource和Activity,替代逻辑如下:

  1. 首先在类级别定义静态ActivitySource实例:
private static readonly ActivitySource _activitySource = new ActivitySource("Your.Application.Identifier");
  1. 替换原追踪代码:
using (var activity = _activitySource.StartActivity("AddPowerBIEncryptionKey"))
{
    if (activity != null)
    {
        // 将原追踪参数转为Activity标签
        activity.AddTag("someKey", someKey);
        activity.AddTag("someToken", someToken);
        
        // 业务逻辑代码...
    }
}
  • 原ServiceClientTracing.IsEnabled的判断无需手动处理:ActivitySource.StartActivity会自动检测是否有追踪监听者,无监听时返回null。
  • 原NextInvocationId对应的追踪ID,由Activity自动生成维护,可通过activity.Id直接获取。

迁移说明

  • 目前没有官方提供的Microsoft.Rest.ClientRuntime到Azure.Core的一对一迁移文档,但Azure.Core的诊断系统完全遵循现代.NET追踪规范,你可以基于Activity框架的现有能力调整追踪逻辑。
  • Azure.Core的客户端默认已集成该诊断体系,自定义追踪通过ActivitySource即可和Azure服务的链路追踪打通。

内容的提问来源于stack exchange,提问作者Rahul Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:23:19