【发布时间】:2017-02-20 14:12:48
【问题描述】:
我有一个想要使用 Application Insights 监控的 WPF 应用程序。我想将每个用户操作分组为一个请求,并嵌入自定义事件和依赖项调用。从我在documentation 操作上下文中读到的内容应该是正确的方法。我写了以下代码:
using (var operation = telemetryClient.StartOperation<RequestTelemetry>(
$"test operation {Guid.NewGuid()}"))
{
telemetryClient.TrackEvent("my test event");
telemetryClient.StopOperation(operation);
}
不幸的是,当我检查 Application Insights 门户时,“我的测试事件”并未显示为与请求事件相关的事件。我尝试了一下,发现如果我手动设置操作属性,事件就会变得相关:
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);
}
但我有一种感觉,它不应该是这样的。所以我的问题是:有人能指出我在第一个 sn-p 中做错了什么吗? TelemetryClient 上是否有一些神奇的设置使其行为符合文档中的说明?
【问题讨论】:
-
它仅默认在 ASP.Net 上下文中生成。请参阅docs.microsoft.com/en-us/azure/application-insights/…:您可以通过附加一个通用操作 ID 将遥测项关联在一起。标准请求跟踪模块对处理 HTTP 请求时发送的异常和其他事件执行此操作。在我的 WinForm 应用程序中,我也必须自己设置它。
-
谢谢@PeterBons。看起来这个手动程序在这里是必须的。我将重构代码,使其看起来更好。您可以将您的评论作为答案,我会接受。
标签: c# azure azure-application-insights