App Insights的Azure文档似乎没有专门针对Windows 10 UWP Apps的新文章。这似乎是所有服务(通知中心,移动应用程序,Azure AD等)的特有情况。到目前为止,我只发现了对Windows 8 / 8.1 Universal应用程序的引用。我不确定它们有多适用,但有些代码片段似乎至少可以编译。
我的问题是我刚刚为'WindowsStore App'设置了一个新的App Insights实例。这适用于Windows 10 UWP应用程序。
在我的应用中,我做了以下事情:
创建了我在所有视图/视图模型中使用的静态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中为Unhandled Exception添加了一个事件处理程序,并在异常上调用TelemetryClient.TrackException。
private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
ViewModelDispatcher.Telemetry.TrackException(e.Exception);
}
在我的视图中添加了TelemetryClient.TrackPageViews到OnNavigatedTo覆盖。
但是到目前为止,在完成所有这些之后,Azure门户中的App Insights仪表板显示了zip,zilch,nada。 :\
这让我想到了两件事之一。要么我错过了这个配方的一些关键部分,要么我仍然在App Insights仪表板的刷新窗口内。
答案 0 :(得分:3)
您是否尝试将您的检测密钥包含在InitializeAsync的调用中? 我在App类的构造函数中使用以下代码。
{{1}}
我还没有确认当前的规格(是的...... ApplicationInsight的文档是一个迷宫:(),但是从AI v1.0开始,你不必将你的检测密钥包含在你的applicationinsight.config中。而不是它,您可以通过调用初始化程序来指定密钥。
答案 1 :(得分:2)
最近发现了这个(我在AI团队工作,但它仍然发生在我身上!)。
如果您手动添加了applicationinsights.config
文件,请确保将其设置为"内容"和"复制如果更新"在项目设置中。如果不是,则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启动代码将在评论中找到而不是真正的密钥。
因此,如果您看到调试输出表明它正在使用文字字符串&#34; YourKey&#34;而不是你的实际钥匙,这就是原因。 (win10 sdk使用正则表达式来查找密钥而不是加载system.xml程序集来解析文件)