Application Insights:控制台应用程序 HttpClient 关联不起作用
Posted
技术标签:
【中文标题】Application Insights:控制台应用程序 HttpClient 关联不起作用【英文标题】:Application Insights: Console Application HttpClient correlation not working 【发布时间】:2021-12-22 22:41:35 【问题描述】:我有一个控制台应用程序,我计划使用 Application Insights 来启动遥测。此控制台应用程序在其中调用 Web API。
操作关联有效,但父层次结构无效。从本质上讲,Web API 调用的父级并不是来自控制台应用程序的初始调用。
下面是我的代码:
控制台应用
static async Task SendHttpOnly()
//Create TelemetryClient
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.InstrumentationKey = "<id>";
var telemetryClient = new TelemetryClient(configuration);
RequestTelemetry requestTelemetry = new RequestTelemetry Name = "ConsoleTest" ;
var operation = telemetryClient.StartOperation(requestTelemetry);
try
using (var client = new HttpClient())
client.BaseAddress = new Uri("http://localhost:37970/");
var responseTask = await client.PostAsJsonAsync<MessageDto>("MessageReceiver", new MessageDto() Body = "Test" );
catch (Exception e)
operation.Telemetry.Success = false;
telemetryClient.TrackException(e);
throw;
finally
telemetryClient.StopOperation(operation);
telemetryClient.Flush();
Task.Delay(5000).Wait();
网络 API
[HttpPost]
public string Post([FromBody] MessageDto dto)
_telemetryClient.TrackTrace($"Service Bus Message Processed: Message: dto.Body");
return $"Processed dto.Body ";
奇怪的是,如果我对 Web API 进行 Web API 调用,它会正确记录它。即使使用相同的代码;第二个 Web API 调用父级是第一个 Web API 调用。
【问题讨论】:
您能否检查 TraceParent 标头中通过线路发送的内容(以及它是否存在或状态是否通过不同的标头传递)? 我意识到我使用了错误的 NuGet 包。我使用的是 Microsoft.ApplicationInsights.AspNetCore,而我应该将 Microsoft.ApplicationInsights.WorkerService 用于控制台应用程序。详情在这里:docs.microsoft.com/en-us/azure/azure-monitor/app/worker-service 我希望常规 SDK 也能在这里工作。 【参考方案1】:谢谢Water。很高兴您解决了您的问题并将其作为答案发布,以便对其他社区成员有所帮助。
由于使用了错误的 Nuget 包而不是使用下面的包,应用程序 HttpClient 关联不起作用
Microsoft.ApplicationInsights.AspNetCore
我们需要使用下面的包
Microsoft.ApplicationInsights.WorkerService
以下是在应用洞察中使用 SDK 的示例代码。
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.13.1" />
</ItemGroup>
更多信息请查看Application Insight worker service。
【讨论】:
以上是关于Application Insights:控制台应用程序 HttpClient 关联不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Application Insights log4j appender不会退出
为什么我无法在Application Insights上查看运行时错误?
API Application Insights 使用的良好实践