gpt4 book ai didi

c# - COM 异常 0x8004005

转载 作者:行者123 更新时间:2023-11-30 17:23:09 24 4
gpt4 key购买 nike

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

System.Runtime.InteropServices.COMException (0x80040005): Need to run the object to perform this operation (Exception from HRESULT: 0x80040005 (OLE_E_NOTRUNNING))

知道这是什么意思,或者如何解决它?我用谷歌搜索时几乎找不到任何东西,而且我在 COM 方面的经验也非常有限。谢谢。

最佳答案

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

  1. 检查系统和应用程序事件日志,查看是否记录了更好的错误消息
  2. 检查 COM 组件的所有应用程序特定错误日志

如果这些都不能更清楚地说明出了什么问题,您可能需要考虑将 COM 程序集添加到组件服务包中。这应该可以让您更轻松地关闭和重新启动它,而无需重新启动系统。

取决于操作系统(这是来自 Windows 7,但大多数类似):

  1. 启动组件服务(通常在管理工具下)
  2. 深入到组件服务、计算机、我的电脑、COM+ 应用程序。
  3. 右键单击以添加新应用程序。
  4. 选择创建一个空应用程序。这将让您选择要在此处运行的 COM 组件。
  5. 为应用程序命名
  6. 如果您不太了解您的 COM 组件,我建议您选择一个服务器应用程序来启动。这将为调用者在进程外启动它。如果这不起作用(例如调用失败等),请删除此应用程序并作为图书馆应用程序重试。
  7. 选择服务的凭据。网络服务可能是最安全的选择(例如最少的权限),但我不知道您的要求是什么。如果它正在访问硬件或其他类似的东西,您可能需要提供域帐户或 LocalSystem。
  8. 完成向导(如果您需要更多控制权,您可能需要重新访问这些向导)。
  9. 深入了解您的新应用程序并找到 Components 文件夹。
  10. 右键单击并选择新建组件
  11. 如果 COM 控件已经注册,请选择“导入组件”。如果没有,选择安装组件
  12. 现在选择您关心的组件。请注意,将所有相互关联的组件放入同一应用程序非常重要。否则,较旧的 COM 程序集不太可能正常工作
  13. 完成向导。如果返回到 TreeView 的 COM+ 应用程序级别,您应该会看到带有非动画图标的新应用程序。

调用代码不应有任何必要的更改。向您的服务发出请求并返回到管理器...一旦 COM+ 应用程序启动,您应该会看到图标动画。如果您愿意,您还应该能够从这里重新启动它。

有很多关于停转时间和池化的配置选项,例如,如果您发现 COM DLL 仅在特定时间段后出现问题,这可能会对您有所帮助。

关于c# - COM 异常 0x8004005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com