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

时间:2010-10-27 09:42:16

标签: c# ms-word com-interop

我收到了这个堆栈跟踪:

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或无效,我选中了。

4 个答案:

答案 0 :(得分:8)

以下是我找到的解决方案:

  1. 在C:\ Windows \ SysWOW64 \ config \ systemprofile上放一个名为Desktop的文件夹(是的,我知道.WTF?)
  2. 打开Regedit,转到HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ AppId并编辑两个以46结尾的Guid的网址。删除他们拥有的每个密钥并添加一个名为RunAs的新密钥,其值为Interactive User
  3. 之后,开始祈祷。 如果通过终端服务器访问它不起作用。这对我来说是个问题嘿嘿。

    编辑: 终端服务器的问题是只允许管理员引发COM对象,因此您需要模拟管理员。

答案 1 :(得分:3)

抱歉'那个1MB的引用...我只是跳过那个。

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

答案 2 :(得分:0)

更新 Microsoft已通过更新解决了该问题。
对于所有对地区格式有疑问的人,请将您的Office更新为 1902版(内部版本11328.20158)
您可能需要更改为每月更新频道才能获取它。

对于Windows 10 1809用户,问题可能来自Windows区域格式设置。 当您使用特殊的区域格式(例如“英语(瑞士)”)时,似乎出现了问题。 如果将其更改为“英语(英国)”,则一切正常。 我已找到有关here

的信息

希望这可以帮助仍然面临问题的人。

答案 3 :(得分:-2)

根据KB文章Considerations for server-side Automation of Office声明

,Microsoft不支持您的方案
  

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

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