使用操作上下文跟踪相关事件的问题



我有一个WPF应用程序,我想使用应用程序见解来监视该应用程序。我想将每个用户操作作为一个请求分组,并使用嵌入式自定义事件和依赖性调用。根据我在文档操作上下文中阅读的内容,应该是正确的方法。我写了以下代码:

using (var operation = telemetryClient.StartOperation<RequestTelemetry>(
      $"test operation {Guid.NewGuid()}"))
{
    telemetryClient.TrackEvent("my test event");
    telemetryClient.StopOperation(operation);
}

不幸的是,当我检查应用程序Insights Portal时,"我的测试事件"并未作为与请求事件的相关事件出现。我进行了一些试验,发现如果我手动设置操作属性,则事件与之相关:

using (var operation = telemetryClient.StartOperation<RequestTelemetry>(
      $"test operation {Guid.NewGuid()}"))
{
    var ev = new EventTelemetry("test event");
    ev.Context.Operation.Id = operation.Telemetry.Context.Operation.Id;
    ev.Context.Operation.Name = operation.Telemetry.Context.Operation.Name;
    telemetryClient.TrackEvent(ev);
    telemetryClient.StopOperation(operation);
}

,但我觉得它不应该像这样。所以我的问题是:有人可以指出我在第一个片段中做错了什么吗?TelemetryClient上是否有一些神奇的设置,使其表现为文档中所述?

确保在同一上下文中所有传出遥测的相对简单方法具有相同的操作ID,名称等。使用CallContext使用遥测方法。

这是一篇非常好的博客文章,显示了如何做。

最新更新