如何将遥测数据导入 Windows 10 UWP 应用程序?

How do I get telemetry into a Windows 10 UWP App?

App Insights 的 Azure 文档似乎没有专门与 Windows 10 UWP Apps 相关的最新文章。这似乎在所有服务(通知中心、移动应用程序、Azure AD 等)中普遍存在。到目前为止,我只找到了对 Windows 8/8.1 通用应用程序的引用。我不确定它们的适用性如何,但一些代码片段似乎至少可以编译。

我的问题是我刚刚为 'WindowsStore App' 设置了一个新的 App Insights 实例。这适用于 Windows 10 UWP 应用程序。

在我的应用中,我做了以下事情:

  1. 为已创建 ApplicationInsights.config 文件的 App Insights 摄取 nuget 包。
  2. 使用我的Windows在 Azure 门户中存储 App Insights 实例中的密钥更新了检测密钥。
  3. 在应用程序清单中添加了 Internet(客户端)功能。
  4. 创建了我在所有视图/视图模型中使用的静态 TelemetryClient。

    private static TelemetryClient telemetry = new TelemetryClient();
    public static TelemetryClient Telemetry
    {
        get { return telemetry; }
    }
    
  5. 更新了 WindowsAppInitializer 以包含多个 WindowsCollectors。

            Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
            WindowsCollectors.Metadata | 
            WindowsCollectors.Session | 
            WindowsCollectors.PageView | 
            WindowsCollectors.UnhandledException
            );
    
  6. 在 App.xaml.cs 中为未处理的异常添加了一个事件处理程序,并在异常上调用 TelemetryClient.TrackException。

    private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        ViewModelDispatcher.Telemetry.TrackException(e.Exception);
    }
    
  7. 在我的视图中添加了 TelemetryClient.TrackPageViews 到 OnNavigatedTo 覆盖。

但到目前为止,在完成所有这些之后,我在 Azure 门户中的 App Insights 仪表板显示 zip、zilch、nada。 :\

这让我觉得发生了两件事之一。要么我遗漏了这个秘诀的一些关键部分,要么我仍在更新 window App Insights 仪表板。

您是否尝试过将检测密钥包含到 InitializeAsync 的调用中? 我在 App class.

的构造函数中使用以下代码
    Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
                    "YOURINST-RUME-NTAT-IONK-EY012345678",
                    WindowsCollectors.Metadata |
                    WindowsCollectors.PageView |
                    WindowsCollectors.Session |
                    WindowsCollectors.UnhandledException);

我还没有确认当前的规格(是的......ApplicationInsight 的文档是一个迷宫:( ),但是从 AI v1.0 开始,你不必将你的检测密钥包含到你的 applicationinsight.config. 而不是它,您可以通过调用初始化程序来指定密钥。

最近发现了这个(我在 AI 团队工作,它仍然发生在我身上!)。

如果您手动 添加了 applicationinsights.config 文件,请确保在项目设置中将其设置为 "Content" 和 "Copy if newer"。如果不是,则 SDK 在运行时无法找到检测密钥,因为 applicationinsights.config 文件未部署到设备。

2016 年 1 月 11 日更新: 我刚刚了解到另一个可能导致此问题的问题:xml 文件中的注释看起来像 xml标签。

如果您的配置文件有以下形式的注释:

<!-- <InstrumentationKey>anything</InstrumentationKey> -->

<!-- 
Learn more about Application Insights configuration with ApplicationInsights.config here: 
http://go.microsoft.com/fwlink/?LinkID=513840

Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.
 -->

(在您可能在线获得的示例中很常见,或者从以前版本的 AI SDK 迁移而来)

如果这些注释出现在您的配置文件中之前您的真实密钥,则 win10 sdk 启动代码将在注释中而不是您的真实密钥中找到它们。

因此,如果您看到调试输出表明它正在使用文字字符串 "YourKey" 而不是您的实际密钥,这就是原因。 (win10 sdk 使用正则表达式来查找您的密钥,而不是加载 system.xml 程序集来解析文件)