COMException(0x800A13E9) - Word互操作服务

问题描述 投票:8回答:4

我得到这个堆栈跟踪:

System.Runtime.InteropServices.COMException (0x800A13E9): Word ðú÷ì ááòéä.
   at Microsoft.Office.Interop.Word.Documents.Add(Object& Template, Object& NewTemplate, Object& DocumentType, Object& Visible)
   at Crm.DocumentGeneration.Printing.DocumentsPrinter.MergeDocuments(ApplicationClass& wordApp, IEnumerable`1 printDataItems, String tempDirectory, String template) in C:\Work\Danel.Nursing\Crm.DocumentGeneration.Printing\DocumentsPrinter.cs:line 249

谷歌搜索后似乎COMException(0x800A13E9)是内存不足异常,但服务器上有足够的内存来启动 宇宙飞船 8192艘宇宙飞船。 这是函数调用:

Document document = wordApp.Documents.Add(ref defaultTemplate, ref missing, ref missing, ref missing);

我检查过defaultTemplate没有null或无效。

c# ms-word com-interop
4个回答
8
投票

这是我找到的解决方案:

  1. 将一个名为Desktop的文件夹放在C:\ Windows \ SysWOW64 \ config \ systemprofile上(是的,我知道.WTF?)
  2. 打开Regedit,转到HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ AppId并编辑两个以46结尾的Guid的进入。删除他们拥有的每个密钥并添加一个名为RunAs的新密钥,其值为Interactive User

在那之后,开始祈祷。如果通过终端服务器访问它不起作用。这对我来说是个问题嘿嘿。

编辑:终端服务器的问题是只允许管理员引发COM对象,所以你要做的就是冒充管理员。


3
投票

对不起'那个1MB参考...我只是跳过那一个。

自动化Office应用程序时,请确保使用服务器上的本地帐户以及Word COM +对象的权限以及您尝试处理的文档。 有几个与您的问题有关的帖子指出了帐户问题:


0
投票

更新Microsoft已通过更新修复了此问题。 对于所有遇到区域格式问题的人,请将您的Office更新为版本1902(Build 11328.20158)。 您可能需要更改为每月更新频道才能获得它。 对于Windows 10 1809用户,问题可能来自Windows区域格式设置。当您使用“英语(瑞士)”等特殊区域格式时,似乎存在问题。如果你把它改成“英国(英国)”一切正常。关于这个的信息我找到了here

希望这有助于仍然面临问题的人。


-2
投票

根据KB文章Considerations for server-side Automation of Office的说法,Microsoft不支持您的方案

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

然后,本文将介绍服务器端自动化的替代方案,其中一个是Open XML。如果您还没有这样做,可能需要查看这篇文章。

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