Application Insights未使用CancellationToken从.Net在Azure中记录任何内容

Application Insights未使用CancellationToken从.Net在Azure中记录任何内容,.net,azure-application-insights,telemetry,.net,Azure Application Insights,Telemetry,我在使用以下代码登录到Application Insights时遇到问题: var configuration = new TelemetryConfiguration(); configuration.InstrumentationKey = "KEY"; var client = new TelemetryClient(configuration); client.TrackEvent($"TEST EVENT", pr

我在使用以下代码登录到Application Insights时遇到问题:

var configuration = new TelemetryConfiguration();
            configuration.InstrumentationKey = "KEY";
            var client = new TelemetryClient(configuration);
            client.TrackEvent($"TEST EVENT", properties: new Dictionary<string, string>() { { $"TEST Property", $"TEST Value".ToString() } });
有人能帮我确认一下我是否遗漏了什么吗


-Shalabh有两个可能的原因:

  • 您正在创建新的
    TelemetryConfiguration
    对象,它默认为没有重试/没有本地存储的简单遥测通道,因此网络问题将导致事件丢失。您可以使用从ApplicationInsights.config初始化的
    TelemetryConfiguration.Active
    ,它将使用带有重试和本地存储的
    ServerTelemetryChannel
  • 执行该方法后,应用程序可能会立即退出,从而没有机会填充遥测缓冲区并发送遥测数据。如果是这样,您可以使用
    Flush()
    <代码>刷新()除非您已经实现,否则单独使用不会有帮助,因此您可能还需要添加一个
    睡眠()

谢谢,我会试试看是否有效。这里共享的大多数示例并没有专门讨论使用遥测通道。是否必须使用它?我们不能直接调用.TraceEvent吗?是的,您完全可以直接调用TrackEvent()。这个频道是幕后用来传递信息的。对于长时间运行的应用程序,几乎任何频道都可以。对于短期应用,默认频道不是最好的。您好@Dmitry Matveev,谢谢您的回复。我在一个控制台应用程序中尝试了相同的代码(使用channel),效果很好。然而,当尝试从CRM在线插件编写时,它失败了。CRM Online受OAuth保护。你认为从中写作会有一些挑战吗?我提到,我们可能正在寻找一个潜在的bug:
CancellationTokenSource tokenSource = new CancellationTokenSource();
            CancellationToken token = tokenSource.Token;
            var configuration = new TelemetryConfiguration();
            configuration.InstrumentationKey = "KEY";
            var client = new TelemetryClient(configuration);
            while (!token.IsCancellationRequested)
            {
                client.TrackEvent($"TEST EVENT", properties: new Dictionary<string, string>() { { $"TEST Property", $"TEST Value".ToString() } });
            }