【问题标题】:System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSIDSystem.Runtime.InteropServices.COMException (0x80080005):检索具有 CLSID 的组件的 COM 类工厂
【发布时间】:2012-11-15 16:46:29
【问题描述】:

我在一个简单的 asp.net c# 应用程序中用 SQL Server 中的数据替换 MS Word MergeFields,它在本地运行良好,但是当我发布它时经常我得到以下信息:

System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00020906-0000-0000-C000-000000000046} failed due to the following error: 80080005.

我尝试同时授予IIS_IUSRSNETWORK SERVICE 完全访问权限,并在 DCOM 配置中将身份设置为交互式,但没有解决任何问题。

【问题讨论】:

  • word的服务器端自动化遇到各种问题:support.microsoft.com/kb/257757
  • @SimonMourier 否则我怎样才能让它工作?
  • 阅读文章中的“服务器端自动化的替代方案”。不过你可能不喜欢……

标签: c# asp.net ms-word


【解决方案1】:

因为令人讨厌的权限阻止你做你期望的事情,(我过去也遇到过)。有时我也不得不将我的 DCOM/COM+ 权限更改为一个对象。在项目的 DCOM 配置选项卡屏幕上,在安全性下,确保“启动和激活”和“访问”都已自定义,以明确包含您打算允许的用户帐户。

现在,还有一件事 - 只是为了排除所有其他问题。我什至已经达到了(仅用于测试/确认)的程度,即在“身份”选项卡上,您可以选择“交互式用户”、“启动用户”或“此用户”。我会输入您知道您拥有权限的实际帐户(确保您的帐户也在启动和激活中......以及上一个选项卡上的访问权限)。并输入/确认您的密码。

如果仍然失败,那么我会尝试添加 ADMIN 帐户以获得权限并尝试...只是为了是的,它的权限基于用户。确认后,您可以缩减它,甚至创建一些简化的受限用户,其主要目的是运行此实用程序,并且此新用户拥有足够的权限来执行此操作。

完成后,您应该可以开始了。

现在,也就是说,我遇到了另一件棘手的事情,而且已经有一段时间了,所以它可能不再是问题了。在某些“Windows”更新期间,该功能会定期停止工作。但是,如果我所做的只是返回用户维护,请更改帐户密码(即使只是保持相同的原始密码)并保存它,然后返回 DCOM 并输入/重新确认将其保存在那里,一切都恢复了功能。

【讨论】:

    【解决方案2】:

    您应该与NETWORK SERVICE 用户共享保存从模板创建的文档的文件夹。

    【讨论】:

      【解决方案3】:

      dcomcnfg identity 更改为 interactive 而不是 launching user

      参考:Error : 80070005,有这个论坛里有一些关于

      Retrieving the COM class factory for component with CLSID {7979FAA5-3A2A-4E50-A2C9-286C6F34C1D3} failed due to the following error: 80080005
      

      【讨论】:

      • 已经设置为Interactive userAuthentication level 呢?目前是none
      • 通过dcomcnfg添加新组
      • 如何以及出于什么目的? @bot
      猜你喜欢
      • 2013-01-20
      • 2023-04-07
      • 2011-05-14
      • 2016-05-18
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多