【问题标题】:Application Insights failing with System.Reflection.TargetInvocationException on load - WP 8.1Application Insights 在加载时因 System.Reflection.TargetInvocationException 而失败 - WP 8.1
【发布时间】:2015-05-20 08:37:30
【问题描述】:

我开始探索 Application Insights 并尝试将其添加到我的 Windows Phone 8.1 应用程序中。尝试执行项目时,在 App.xaml.vb 中的 Public Sub New() 内加载时引发异常。发生错误的行是

TelemetryClient = new TelemetryClient()

抛出的异常是

“System.Reflection.TargetInvocationException”类型的第一次机会异常发生在 mscorlib.ni.dll 中

“System.Reflection.TargetInvocationException”类型的异常发生在 mscorlib.ni.dll 中,但未在用户代码中处理

附加信息:调用的目标已抛出异常。

内部异常详情:

{System.InvalidOperationException: Type 'Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights, Version=0.16.1.418, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 没有实现所需的接口

Microsoft.ApplicationInsights.Extensibility.IContextInitializer。 在 Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryConfigurationFactory.CreateInstance(类型 interfaceType,字符串 typeName) 在 Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryConfigurationFactory.LoadInstance(XElement 定义,类型预期类型,对象实例) 在 Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryConfigurationFactory.LoadInstances[T](XElement 定义,ICollection`1 个实例)}

我按照in the Azure documentation 列出的步骤进行操作。我可能做错了什么?

【问题讨论】:

  • InnerException 是什么? TargetInvocationException 总是有一个。 (它告诉你在反射调用的方法中实际发生了什么。)查看New() 中的一些其他代码也可能对我们有所帮助。
  • 我已添加内部异常详细信息以供参考。至于New()中的其他代码,这是第一行,后面是InitializeComponent()
  • 您的调试器是否设置为在第一次出现异常时中断?如果在抛出异常后继续执行会发生什么?
  • 我相信它被关闭了,但我可能错了。在我的调试器设置中没有检查任何“抛出”。如果我继续,应用程序崩溃而不执行下一行代码。

标签: vb.net windows-phone-8.1 azure-application-insights


【解决方案1】:

您是在 Windows 运行时还是在 Silverlight 之上使用 Windows Phone 应用程序?

如果您从 ApplicationInsights.config 中删除以下行,您的应用是否启动成功?

    <Add Type="Microsoft.ApplicationInsights.Extensibility.ComponentContextInitializer, Microsoft.ApplicationInsights"/>

【讨论】:

  • 它是一个运行时应用程序。删除该行没有任何区别,它仍然会崩溃。
  • 最新的 NuGet 不再使用“使用”。相反,它添加: TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient() 所以看起来你没有使用最新的。您能否尝试启动一个新项目并确保您正在安装此 NuGet:nuget.org/packages/Microsoft.ApplicationInsights.WindowsApps/…
  • 是的。从 2015 年 5 月 1 日开始,拥有最新版本 0.16 build 418 预发布版。仍然没有运气并得到同样的例外。
  • 更新。我发现的一种解决方法是实例化 TelemetryClient 两次,第一次在 Try Catch 块中。我希望它干净而不需要两个实例化。
  • 你能分享你的项目吗?我无法获得重现?
【解决方案2】:

原来这是一个损坏的解决方案。我添加了 nuget,然后添加了 Application Insights。在这期间,我将 nugget 包升级到了 0.16 预发布版本。实际上,它创建了多个引用。所以我最终手动清除了 package.config 和 .vbproj 中 Microsoft.ApplicationInsights 的所有条目。我还删除了所有引用并再次引用了整个内容。现在它就像一个魅力!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2015-12-27
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2017-01-20
    相关资源
    最近更新 更多