什么引起了错误 HRESULT: 0x80010105 (RPC_E_SERVERFAULT)?

11
我创建了一个ASP.NET Web服务,使用第三方支付处理引擎来授权信用卡交易。
Web服务托管在一个独立的应用服务器上,并通过ActiveX对象(.ocx扩展名)连接到支付处理服务器。最近,在尝试使用“IsAvailable”检查来建立与应用程序的连接时,它一直生成HRESULT: 0x80010105(RPC_E_SERVERFAULT)异常。
有人可以推荐一个好的起点来研究这个问题吗?
(我知道联系供应商是第一选项,但在我们联系技术支持之前,我想让自己有所准备)
5个回答

2

我知道这里是Stack Overflow,应该提供编程答案,但你没有提到失败的机器是否有任何更新或软件更改。如果没有软件更改,最有可能是硬件问题。RAM会出现故障,CPU也会故障,硬件也会出现故障。如果您可以将系统脱机并测试硬件,您可能会发现磁盘或内存模块正在失败(NIC也可能)。这很可能是供应商要求您执行的第一步,但如果您自己执行,您可以在自己的条件下执行,并且可能为几个小时的服务费节省自己的时间。


@Elmue 有什么建设性的意见吗?验证硬件通常是一个好的步骤,我曾经目睹过不良的 RAM 导致各种错误,包括加密签名验证问题。如果加密出现问题,RPC 可能会因此而失败。该问题还询问了在联系供应商时的建议,常规硬件可以让人们免受许多卑鄙的技术手段和电话代理人用来挂断电话的骗局。 - Sqeaky
6
我看到过几个RPC_E_SERVERFAULT错误,但从未是硬件原因。这些错误仅意味着一个COM服务器已经崩溃了。其原因大多是编程错误,如缓冲区溢出、读取空指针或错误处理不当等。如果您有RAM问题,您将会看到不同应用程序的崩溃(而不仅仅是一个服务器),甚至会蓝屏。硬件问题不可能只导致一个应用程序的崩溃。 - Elmue
那很有成效,即使我不同意也给你点赞。我曾经见过内存损坏导致单个应用程序失败,甚至每次都是相同的方式。这是不太可能的,但完全取决于内存使用和软件分配方案。此外,它可以防止电话代理告诉您检查硬件然后挂断电话。 - Sqeaky

2
我曾经在使用Web服务时遇到了相同的错误(RPC_E_SERVERFAULT),那是由于ActiveX对象崩溃导致的。每次ActiveX对象崩溃时,IIS都会抛出此错误,这会掩盖对象崩溃的原因(对我们来说,通常是在加载需要处理并返回值的无效文件时崩溃)。
您是否已检查系统日志等信息,以查看您的ActiveX控件是否记录了实际的错误?
如果您没有发现任何明显的东西,我建议您联系他们的技术支持,找出诊断实际错误的最佳方法以及它是否在任何地方记录其错误。

1
我检查了Web服务服务器的事件日志,没有看到与RPC_E_SERVERFAULT错误相关的任何错误。我无法访问应用程序服务器,也许在那里我能找到一些线索。 - Michael Kniskern

2

迈克尔,你的第三方Activex控件可能没有正确地管理内存。我猜测它在不应该的时候覆盖了一部分内存。请与你的第三方供应商联系,看看他们是否有修复方法。


0

这也可能意味着COM对象崩溃了。我在Excel中的一个宏中遇到过这种情况,导致Excel崩溃。尝试单独重新运行代表COM对象(在我的情况下是Excel插件)的应用程序,看看它是否会崩溃或产生一些错误。


0

您可以启用adplus,使其在每次出现异常时抓取内存转储。这可用于帮助调试问题。


内存转储会来自哪里:IIS还是ActiveX对象? - Michael Kniskern
内存转储来自应用程序,而不是单个模块,因此 IIS。 - 1800 INFORMATION
当异常发生时,它实际上不会生成 .DMP 文件。是否有其他类型的文件扩展名我应该寻找,被视为内存转储? - Michael Kniskern

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接