在 Windows Server 上的 C# 应用程序中访问 Microsoft Word COM 对象时出现错误 80080005 (CO_E_SERVER_EXEC_FAILURE)

问题描述 投票:0回答:1

我在使用 Microsoft Word COM 对象的 C# 应用程序中遇到了一个令人困惑的问题。当应用程序在 Visual Studio 调试模式下在调试模式下顺利运行时,设置如下: 组件服务>…Word > 身份 > 在 Windows 服务器中选择“启动用户”,在将其部署到同一服务器并由 IIS 托管时,我遇到了持续错误。

我遇到的具体错误消息是:

“由于以下错误,检索 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(HRESULT 异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。”

这是我迄今为止尝试过的:

⁃   Application pool changed identity to all possible selection, including the ultimate one I want to use a user named Administrator
⁃   Component Services> Identity tab > selected the interactive user.
⁃   "Launch and Activation” and “Access Permissions”: added all local activity and control to: Administrator user (This User) , IIS_IUSRS,  Anonymous, Everyone, Guests, Interactive, Network , System
⁃   right click on Component Services/Computers/DCOM Config/Microsoft Word97 - 2003 Document properties/General Tab, set Authentication Level:None

在尝试上述所有更改时,在更改应用程序池中的身份或组件服务中单词的属性身份选项卡时,我仍然遇到上面的错误或下面的错误,没有任何效果。另一个错误: “由于以下错误,检索 CLSID {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80070005 访问被拒绝。 (HRESULT 异常:0x80070005 (E_ACCESSDENIED))。”

虽然我遇到过几篇讨论类似问题的帖子,但我已经努力尝试了几乎所有建议的解决方案,包括应用程序池设置和组件服务中的各种配置。尽管做出了这些努力,问题仍然存在。任何新的见解或替代方法将不胜感激。

c# ms-word class-library
1个回答
0
投票

在处理服务器或任何服务应用程序上的 MS Word 自动化时,这是一个广泛传播的问题。以下是 MS 针对此类情况的说明:

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

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

Office 服务器端自动化注意事项文章中了解更多相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.