【问题标题】:80080005 Server execution failed when using Word Automation80080005 使用 Word 自动化时服务器执行失败
【发布时间】:2020-03-03 07:23:26
【问题描述】:

我有一个处理 Word 文档的 .Net C# 应用程序。

我正在使用Microsoft.Office.Interop.Word.dll,它是 Office 2010 的一部分,产品版本 14.0.xxx。调用:

using Microsoft.Office.Interop.Word;

...

Application app = new Application();

导致以下错误:

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

我还注意到,当生成此错误时,会创建一个 WINWORD.EXE 实例并挂起,但该文件关联到 Office 365,产品版本 16.0.xxx。

我假设错误的(至少一个)来源是我正在使用的 .dll 与我的开发机器上安装的 Word 版本之间的不兼容。

问题

是否可以在服务器上不安装 Microsoft Office 的情况下执行办公自动化?

【问题讨论】:

    标签: c# automation ms-office


    【解决方案1】:

    您无需在服务器上安装 MS 即可使用 Office 自动化!

    Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。

    【讨论】:

    • 谢谢。那么,如果我想动态操作 Office 文档,最好的方法是什么?使用开放库?
    【解决方案2】:

    是否可以在服务器上不安装 Microsoft Office 的情况下执行办公自动化?

    不,这是不可能的。相反,如果您只处理开放的 XML 文档,您可以考虑使用Open XML SDK。否则,您可以考虑使用为服务器端执行而设计的任何第三方组件,例如 Aspose。

    Considerations for server-side Automation of Office 文章声明如下:

    所有当前版本的 Microsoft Office 都经过设计、测试和配置,可作为最终用户产品在客户端工作站上运行。他们假设一个交互式桌面和用户配置文件。它们不提供满足设计为无人值守运行的服务器端组件需求所需的重入性或安全性级别。

    Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时的行为和/或死锁。

    如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将在整体解决方案的稳定性方面承担风险。

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 2016-11-30
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多