如何将遥测数据导入 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 应用程序。
在我的应用中,我做了以下事情:
- 为已创建 ApplicationInsights.config 文件的 App Insights 摄取 nuget 包。
- 使用我的Windows在 Azure 门户中存储 App Insights 实例中的密钥更新了检测密钥。
- 在应用程序清单中添加了 Internet(客户端)功能。
创建了我在所有视图/视图模型中使用的静态 TelemetryClient。
private static TelemetryClient telemetry = new TelemetryClient();
public static TelemetryClient Telemetry
{
get { return telemetry; }
}
更新了 WindowsAppInitializer 以包含多个 WindowsCollectors。
Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
WindowsCollectors.Metadata |
WindowsCollectors.Session |
WindowsCollectors.PageView |
WindowsCollectors.UnhandledException
);
在 App.xaml.cs 中为未处理的异常添加了一个事件处理程序,并在异常上调用 TelemetryClient.TrackException。
private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
ViewModelDispatcher.Telemetry.TrackException(e.Exception);
}
在我的视图中添加了 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 程序集来解析文件)
App Insights 的 Azure 文档似乎没有专门与 Windows 10 UWP Apps 相关的最新文章。这似乎在所有服务(通知中心、移动应用程序、Azure AD 等)中普遍存在。到目前为止,我只找到了对 Windows 8/8.1 通用应用程序的引用。我不确定它们的适用性如何,但一些代码片段似乎至少可以编译。
我的问题是我刚刚为 'WindowsStore App' 设置了一个新的 App Insights 实例。这适用于 Windows 10 UWP 应用程序。
在我的应用中,我做了以下事情:
- 为已创建 ApplicationInsights.config 文件的 App Insights 摄取 nuget 包。
- 使用我的Windows在 Azure 门户中存储 App Insights 实例中的密钥更新了检测密钥。
- 在应用程序清单中添加了 Internet(客户端)功能。
创建了我在所有视图/视图模型中使用的静态 TelemetryClient。
private static TelemetryClient telemetry = new TelemetryClient(); public static TelemetryClient Telemetry { get { return telemetry; } }
更新了 WindowsAppInitializer 以包含多个 WindowsCollectors。
Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync( WindowsCollectors.Metadata | WindowsCollectors.Session | WindowsCollectors.PageView | WindowsCollectors.UnhandledException );
在 App.xaml.cs 中为未处理的异常添加了一个事件处理程序,并在异常上调用 TelemetryClient.TrackException。
private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e) { ViewModelDispatcher.Telemetry.TrackException(e.Exception); }
在我的视图中添加了 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 程序集来解析文件)