【发布时间】:2020-05-11 18:53:13
【问题描述】:
首先,请不要回复一般性建议,即不要在服务器上自动化 Word 或链接到 MS 网页上的“如果你真的必须在服务器上自动化 Word”。我知道这一点。
我有一个作为 Windows 服务运行的进程,并使用 .Net OLE 互操作来自动化 Office(主要是 Open 和 SaveAs)。这段代码已经在数百台使用 Windows 和 Office 版本(32 位和 64 位)的多种组合的服务器上可靠地运行了 8 年,因此我很高兴该机制是可靠的。到目前为止...
使用 Server 2012 R2,它适用于 PowerPoint 和 Excel,但尝试打开 word 文档失败:
System.Runtime.InteropServices.COMException (0x800A16A0):
The file appears to be corrupted.
at Microsoft.Office.Interop.Word.Documents.Open...
到目前为止我的观察可能相关也可能不相关:
- 所有文档均失败
- 在 Windows 8.1 中运行良好
- 在客户站点和我们的测试环境中都发生了同样的问题,因此不太可能是纯粹的环境问题
- 我的应用程序使用的是 .Net 3.5
- 代码链接到 2003 Interop 程序集(显然更高版本的 office 版本受程序集绑定重定向支持)
- 我们已经在 32 位和 64 位的 office 2013 上进行了尝试,结果相同,但没有尝试过早期版本的 office
- 无论服务是作为 LocalSystem 还是作为标准用户帐户运行,它都会失败
- 如果我们在前台运行服务进程(即直接双击可执行文件),问题就不会发生
显然,我仍有一些事情需要调查,但我很想知道是否有其他人看到过这个特定问题,即使你还没有解决它。请注意,办公自动化存在许多困难和问题,因此除非您的症状与我的非常相似,否则您可能没有同样的问题。
【问题讨论】:
标签: automation ms-word ms-office office-interop