0

我有一个在本地 IIS 服务器上运行的 MVC 应用程序。我在 Azure 上有一个现有的 App Insights 资源,我希望在其中显示来自我的应用程序的遥测。但是,跟踪消息不会显示在 Azure 门户上。我已将 ApplicationInsights 添加到我的项目中,指定了遥测应在 ApplicationInsights.config 中显示的资源,还编写了一个 TelemetryWrapper,我在我的代码中使用它来发送实际的遥测信息和错误消息。

我通过包装器初始化遥测服务:

  TelemetryWrapper.InitializeTelemetry("InstrumentationKey", "ApplicationName");

并从包装器中发送消息

  TelemetryWrapper.TelemetryInfo(requestId, action, userId, ultimateId, systemId, payload);

TelemetryWrapper 概述:

  public static void InitializeTelemetry(string apiKey, string appId)
    {
       bool postBackground = true;
        _telemetry = new TelemetryHelper(apiKey, appId, false) { PostBackground = postBackground };
    }

  public static void TelemetryInfo(Guid requestId, string action, Guid userId, string ultimateId, string systemId,
        string payload)
    {
      var telem = CreateInstance(requestId, action, ultimateId, userId, systemId, payload);
      _telemetry.Info(telem);
    }

我可能做错了什么?

4

1 回答 1

1

需要更多信息。您所显示的只是您的代码,这里没有可供查看的 AppInsights 代码。所以可能是你的TelemetryHelper班级没有正确设置 ikey,ikey 可能无效。

但是:让我印象深刻的一件事是您对术语apiKeyappId代码的使用。

这两件事在应用程序洞察中具有特定含义,但那是用于从 AI API 服务 读取数据(在这种情况下,您可以认为 apiKey 是一个秘密,就好像有人拥有这些密钥,他们可以读取您的所有数据一样!) 我不确定您是否在这里在不同的环境中使用它们,但这立刻让我大吃一惊。

还有一个不同的东西,“仪器密钥”,或者iKey你用来数据发送到应用程序洞察力。您是否可能切换这些东西并尝试使用 AI appId 和 apiKey 代替 iKey?

一种检查方法是在本地使用 fiddler 或其他一些工具来监视出站 http 流量。将其配置为解密 https,并注意对 dc.services.visualstudio.com 的出站呼叫,这是您的遥测数据所在。如果您有出站电话,那么它至少会尝试发送您的遥测数据。如果这些调用失败,则响应可能会告诉您您使用的 iKey 无效(如果是这种情况)。

你不需要

于 2016-11-09T22:32:57.510 回答