UWP:未指定的错误 - HRESULT 异常:0x80004005

UWP: Unspecified Error - Exception from HRESULT: 0x80004005

提问人:Cristiano Ghersi 提问时间:7/29/2020 更新时间:3/18/2021 访问量:1794

问:

我正在用 C# 开发一个 UWP 应用,并且附加了一个用于未处理异常的处理程序,该处理程序向我们发送未经处理的异常,以便我们可以对其进行诊断。

我收到了大量的

System.Exception - 未指定的错误 (来自 HRESULT 的异常: 0x80004005)

没有任何堆栈跟踪或其他附加信息。

这在调试中从未在本地发生过,而仅在生产中针对真实用户发生过,从未抱怨过这个问题,所以我想这似乎是一个无声错误,可能不会影响用户。

无论如何,我对这个问题未解决感到有点不安。

我怎样才能找到这个问题的罪魁祸首?

以前有人遇到过这个问题吗?

谢谢!

C# 异常 UWP 未处理异常

评论

0赞 Pavel Anikhouski 7/29/2020
您是否检查了 Windows 事件日志?
0赞 Cristiano Ghersi 7/29/2020
嗨,@PavelAnikhouski,我检查了一下,显然没有检测到可能与此问题相关的事件
0赞 Faywang - MSFT 7/29/2020
您能否提供更详细的错误信息?是否可以在内部构建日志?
0赞 Cristiano Ghersi 7/30/2020
@Faywang-MSFT:这正是问题所在!!该异常不提供任何其他信息,不提供详细信息,并且仅在用户机器的生产中偶尔发生!所以我们根本没有任何线索......
1赞 Cristiano Ghersi 3/19/2021
嗨,@Zilog80,谢谢你的提示,好主意!实际上,报告此错误的大多数设备都是具有Wifi /以太网连接的PC。此外,我们的应用程序基本上不需要任何互联网连接,即使 PC 离线也可以完美运行(测试了无数次,也被很多用户测试)。还有其他想法吗?

答:

0赞 SammuelMiranda 3/17/2021 #1

在 Microsoft 支持上检查它,我发现了 2 个关于0x80004005非常不同的参考资料。

第一个是关于 Windows XP Ativation,这表明 Windows 未正确激活 - 该消息在 Windows 10 上可能仍然相同,但微软页面不足以证明这一点。

另一个参考资料是关于 Windows 更新(在 Windows 10 上)的安全版本,该版本具有相同的错误代码(对于没有更新KB3087040的 PC);似乎更有可能。

评论

1赞 Cristiano Ghersi 3/17/2021
感谢您的信息,此更新KB3087040何时发布?是否有关于此更新的任何文档?
0赞 SammuelMiranda 3/18/2021
看,是的,有 - 在 microsoft.com(现在的问题是我来自巴西,所以每次我去 microsoft.com 我都会收到葡萄牙语的链接,所以我不知道它将如何显示给你,但这里是:support.microsoft.com/pt-br/topic/......)
0赞 Cristiano Ghersi 3/18/2021
明白了。这是 2015 年的更新:我不确定它是否与我们 2021 年的问题有关......此外,我们的应用程序需要 Windows 10 版本 2019+,因此我认为此更新已在 Windows 的主要更新中可用。
0赞 SammuelMiranda 3/18/2021
明白了 - 我会看看我是否找到其他任何东西,但通常 0xNNNNNNNN 错误对 Microsoft 支持有一些描述,与原因有关,有时错误不够具体 - 特别是这个我只找到了这 2 个参考(对于 Win XP 和 Win 10 Flash 安全性),但可能是其他只是在支持网站上没有适当的文档或错误帖子。我会继续寻找。
0赞 SammuelMiranda 3/18/2021
在 Microsoft 论坛之外(来自 appuals.com/solved-how-to-fix-error-0x80004005)提到的一个是,这个错误是一个一般错误,我在这里引用:“错误 0x80004005 被翻译为未指定的错误,通常在用户无法访问共享文件夹、驱动器、虚拟机以及 Windows 更新安装失败时出现。 已损坏或无法访问的更新和其他系统依赖项。
0赞 Alex Leo 3/18/2021 #2

如果没有适当的错误或异常,几乎不可能解决或尝试回答。

过去,当遇到类似的问题时(本地问题正常,开发问题正常,但生产失败),我和许多其他开发人员的解决方案是缩小范围并断言应用程序中抛出的异常在哪里。

假设: 如果异常没有被处理,我们应该看到应用程序失败 - 它可能被封装在语句中。catch

首先,我们需要添加一些日志记录,您可以使用log4net

如果假设是正确的 - 在应用的每个语句中添加日志记录。取决于应用的规模 - 这需要一些时间来调试。catch

希望捕获和记录能让您深入了解并解决您的问题。

还可以在访问资源的位置添加日志记录。

评论

0赞 Cristiano Ghersi 3/19/2021
谢谢亚历克斯。我们已经使用了 log4net 以及 2 个名为 Raygun 和 Logify 的远程崩溃报告工具。问题在于,该异常是存储异常,这意味着它来自 XAML 引擎或其他一些非托管代码。因此,我们无法在正常的尝试捕获中捕获它。此外,我们已经跟踪了异常,但它没有给出任何堆栈跟踪或任何其他消息,因此我的请求。