Asp.net 使用App Insights向自动生成的遥测添加相关id

Asp.net 使用App Insights向自动生成的遥测添加相关id,asp.net,asp.net-web-api,azure-application-insights,Asp.net,Asp.net Web Api,Azure Application Insights,我对应用程序洞察非常陌生,我正在考虑将其用于我计划用asp.net webapi实现的一组服务。我能够很容易地启动和运行基本的遥测(右键单击VS上的项目,添加应用程序洞察),但后来我遇到了一个障碍。我计划在请求头中为对下游服务的调用设置一个相关id,并且我想用相同的相关id标记与一个外部调用相关的所有遥测 到目前为止,我发现有一种方法可以配置遥测初始化器,但如果我理解正确,这是在我访问请求之前运行的,这意味着我无法检查是否有应该附加的相关id 因此,我想可能有两种方法可以解决这个问题:1)如果我

我对应用程序洞察非常陌生,我正在考虑将其用于我计划用asp.net webapi实现的一组服务。我能够很容易地启动和运行基本的遥测(右键单击VS上的项目,添加应用程序洞察),但后来我遇到了一个障碍。我计划在请求头中为对下游服务的调用设置一个相关id,并且我想用相同的相关id标记与一个外部调用相关的所有遥测

到目前为止,我发现有一种方法可以配置
遥测初始化器
,但如果我理解正确,这是在我访问请求之前运行的,这意味着我无法检查是否有应该附加的相关id

因此,我想可能有两种方法可以解决这个问题:1)如果我能够在初始化器之前以某种方式访问请求头,这显然可以解决问题,或者2)以某种方式获得用于报告自动生成的遥测的TelemetryClient实例


也许最后的办法是关闭所有的自动功能并手动执行,当然我可以控制
遥测客户端上设置的属性。但这将是相当多的工作,所以我更愿意找到其他的解决方案。

你说你应该使用遥测初始化器是正确的。当对任何遥测项目调用Track method时,将调用所有遥测初始化器。自动生成的请求遥测是在请求ONED时“跟踪”的,此时您应该有所有的自定义标题可供使用

还请查看OperationId-这是App Inisghts管理的标准上下文的一部分,用于将请求与下游执行关联起来。这是自动创建和传递的,包括跟踪(如果使用trackTrace)

此外,我们在UX中内置了支持,可以轻松查看特定操作的所有遥测数据-可以在“搜索->详细信息-->相关项目-->此操作的所有遥测数据”中找到它。

在最新版本(2.0.0-beta3)中,我们还通过HttpContext扩展方法:GetRequestTelemetry公开了自动生成的请求遥测数据