繁体   English   中英

如何在 .net 核心 3.1 应用程序中访问 W3C TraceContext 标头?

[英]How can I access W3C TraceContext Headers in a .net core 3.1 application?

这些来源( 微软文档微软开发博客)state,为了在 .net 3.0+ 核心应用程序中使用新的W3C 跟踪上下文标头,不需要额外的配置。 但是,我们没有从通过 ServiceClient 发出的任何请求中接收到 traceparent 或 tracestate。

正确的设置过程是什么? 你们是如何获得分布式跟踪 ID 的? 如果可能的话,我们更愿意在不向所有现有服务添加大量代码的情况下自动公开这些值。

非常感谢您!

PS:这是我的第一个问题; 如果您需要更多信息,请告诉我

.net 5 中的System.Diagnostics.Activity Id 已配置为w3c 标准 这意味着所有Actions都可以通过traceparent id 格式识别,并且traceparenttracestate都将发送到http请求 header 中的下游依赖项。 正如你所说,不需要额外的配置,但在 .net 3 中是不同的,默认的 id 格式是Hierarchical的,它作为HeaderRequestId向下传播。 要查看 Activity Id 格式,请将System.Diagnostics导入 class 并键入: Console.WriteLine(Activity.Current.Id) ,您将看到如下格式: |fab6082c-46326cca135ffe48.1. . 要将其更改为 .net 3 中的 w3c 格式,需要在您的 main 方法中强制它:

public static void Main(string[] args)
{
    Activity.DefaultIdFormat = ActivityIdFormat.W3C;
    Activity.ForceDefaultIdFormat = true;

    CreateHostBuilder(args).Build().Run();
}

然后,您将看到 w3c 的格式以及traceparenttracestate字段已传播到 header 中的下游依赖项。

如果你想发送消息抛出一个代理,在AMQP 调用的情况下使用application-properties部分。 您可以在此处此处找到这两种情况的一些示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM