我们有一些与同一COM服务器通信的工具和服务。过了一段时间,我们得到了错误
COMException (0x800706BA) RPC服务器不可用
似乎有一个应用程序阻止RPC,而第二个应用程序试图通信并失败。它从来都不是同一个应用程序,有时要花上几个小时才能实现。但最糟糕的是:在RPC错误第一次出现之后,归属应用程序每次向这个COM服务器调用COM函数时都会得到相同的RPC错误--它已经死了。在重新启动应用程序(或服务)后所有运行良好,直到下一次..。是否有一种方法可以决定RPC是否可用,然后等待直到它是免费的?否则,我必须创建一个新的COM对象,并希望不必重新启动应用程序。
谢谢你的帮助。
发布于 2013-12-05 06:46:32
(0x800706BA) RPC服务器不可用意味着客户端无法联系COM服务器端的RPC服务器。请注意,RPC服务器有一个单独的代码太忙了。这种情况可能发生,因为发生了以下任何一种情况:
注意,后者与您的描述非常匹配--您实例化了一个COM对象,获得了一个指向它的指针,它工作了一段时间,然后发生了一些事情,任何通过该指针访问对象的尝试都会产生不可用的RPC服务器,因为很可能已经没有COM服务器进程运行了,并且它内部的RPC服务器也消失了。在这种情况下,您能做的唯一有意义的事情是恢复COM对象。在您的应用程序中,您需要额外的逻辑来解释这种情况。
发布于 2016-04-15 15:24:53
我用一个COM+对象遇到了这个错误,并解决了它。如果在应用程序中创建和使用COM+对象,如果COM+应用程序被回收,则重复使用同一个COM+对象将产生此错误。您可能需要重新实例化COM+对象才能使它再次工作。您可以尝试以下步骤来再现错误:
https://stackoverflow.com/questions/20377540
复制相似问题