首页 > 解决方案 > 在 IIS 中打开 MS Word 时出现 COM-Exception 0x80070520

问题描述

我有一个在 IIS 上运行的 .NET Web 服务 (SOAP),它通过 COM 打开一个 MS Word 应用程序。

突然,这在集成构建中的一台测试机器上失败了,但有以下异常:

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070520 A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520).

最近出现了我认为可能导致这种行为的 Windows 和 Office 更新。不幸的是,当我将机器恢复到较早的备份时,更新会自动安装,我最终会遇到同样的错误,所以我无法可靠地证明这一点。公司领域的基础设施也可能发生变化,但我不知道从哪里开始搜索。

机器运行 Windows 10 20H2 和 MS Office 2016 点击运行。运行 IIS 应用程序的用户是公司域用户和管理员组的一部分。

其他机器(MS Office 变体的其他操作系统)确实有这个问题。但我担心这种行为也会出现在其他机器或生产环境中。

我还测试了在 PowerShell 中通过 COM 打开 MS Word 是否有效。我看到很多关于任务计划程序的谷歌结果说我应该设置组策略“计算机配置\Windows设置\安全设置\本地策略\安全选项\网络访问:不允许存储用于网络身份验证的密码和凭据" 禁用,但这已设置为禁用。

标签: .netiisms-wordcomms-office

解决方案


我有一个在 IIS 上运行的 .NET Web 服务 (SOAP),它通过 COM 打开一个 MS Word 应用程序。

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

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

在Office 服务器端自动化的注意事项文章中阅读有关此内容的更多信息。


推荐阅读