C# COM异常0x8004005

C# COM异常0x8004005,c#,com,filenet-image-services,C#,Com,Filenet Image Services,我有一个C web服务,它调用COM对象来访问FileNet映像系统。在调用FileNet COM对象时,服务偶尔会遇到以下错误: System.Runtime.InteropServices.ComeException 0x80040005:需要运行对象才能执行此操作,HRESULT中的异常:0x80040005 OLE_E_NOTRUNNING 你知道这意味着什么,或者如何排除故障吗?我用谷歌搜索时几乎什么也找不到,而我使用COM的经验非常有限。谢谢。如果问题确实是间歇性的,有时发生在一台机

我有一个C web服务,它调用COM对象来访问FileNet映像系统。在调用FileNet COM对象时,服务偶尔会遇到以下错误:

System.Runtime.InteropServices.ComeException 0x80040005:需要运行对象才能执行此操作,HRESULT中的异常:0x80040005 OLE_E_NOTRUNNING


你知道这意味着什么,或者如何排除故障吗?我用谷歌搜索时几乎什么也找不到,而我使用COM的经验非常有限。谢谢。

如果问题确实是间歇性的,有时发生在一台机器上,有时不发生-您可以编写代码捕获错误,然后让它重试


如果某些机器无法正常工作,则可能是由于其他问题,如UAC,或组件安装不正确。

不幸的是,HRESULT是出错的错误代码。我建议:

检查系统和应用程序事件日志,查看是否有更好的错误消息被记录 检查COM组件的任何特定于应用程序的错误日志

如果两个都不清楚发生了什么问题,您可能需要考虑将COM组件添加到组件服务包中。这将使您可以更轻松地关闭和重新启动它,而无需重新启动系统

根据操作系统的不同,这来自Windows 7,但大多数类似:

通常在管理工具下启动组件服务 深入到组件服务、计算机、我的计算机、COM+应用程序。 右键单击以添加新应用程序。 选择创建一个空应用程序。这将允许您选择要在此处运行的COM组件。 为应用程序命名 如果您对COM组件了解不多,我建议您选择一个服务器应用程序来启动。这将在调用方的进程外启动它。如果这不起作用,例如调用失败等,请删除此应用程序,然后作为库应用程序重试。 选择服务的凭据。网络服务可能是最安全的选择,例如权限最少,但我不知道您的要求是什么。如果要访问硬件或其他类似的东西,您可能需要提供域帐户或本地系统。 完成向导如果需要更多控制,可能需要重新访问这些向导。 深入新应用程序并找到Components文件夹。 右键单击并选择“新建组件” 如果COM控件已注册,请选择“导入组件”。如果没有,请选择“安装组件” 现在选择您关心的组件。请注意,将所有相互关联的组件放到同一个应用程序中是相当重要的。否则,旧的COM程序集不可能正常工作 完成向导。如果返回到树状视图的COM+应用程序级别,您将看到新的应用程序,其中有一个非动画图标。 调用代码不应该有任何必要的更改。向您的服务部门提出请求并返回经理处。。。COM+应用程序启动后,您应该会看到图标动画。如果你愿意,你也可以从这里重新开始


有很多关于降速时间和池的配置选项,因此,如果您发现COM DLL仅在一段时间后出现问题,例如,这可能会帮助您解决问题。

谢谢。不幸的是,一旦发生此错误,它会一直重复出现,直到我重新启动服务器;这是非常有用的。不必重新启动服务器将是一个很大的帮助。您是否可能将0x80040005=OLE_E_NOTRUNNING与0x80004005=E_FAIL混淆出现了问题?此问题可能与同一服务器上有两个web服务调用FileNet COM有关,一个服务使用idmLogonOptServerNoUI登录,另一个服务使用idmLogonOptNoUI登录。idmLogonOptServerNoUI被认为是最佳实践。我会进一步研究,看看是否能确定这确实是问题的原因。我不能随意复制这个问题,但是,自从我将web服务分离到两个不同的服务器上后,这种情况就再也没有发生过。Mike,你能解决这个问题吗?嘿,你解决过这个问题吗?我需要帮助将一个web服务移动到另一个服务器后,问题再也没有出现过。我怀疑是上面提到的登录选项。