我得到这个堆栈跟踪:
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或无效。
这是我找到的解决方案:
在那之后,开始祈祷。如果通过终端服务器访问它不起作用。这对我来说是个问题嘿嘿。
编辑:终端服务器的问题是只允许管理员引发COM对象,所以你要做的就是冒充管理员。
对不起'那个1MB参考...我只是跳过那一个。
自动化Office应用程序时,请确保使用服务器上的本地帐户以及Word COM +对象的权限以及您尝试处理的文档。 有几个与您的问题有关的帖子指出了帐户问题:
更新Microsoft已通过更新修复了此问题。 对于所有遇到区域格式问题的人,请将您的Office更新为版本1902(Build 11328.20158)。 您可能需要更改为每月更新频道才能获得它。 对于Windows 10 1809用户,问题可能来自Windows区域格式设置。当您使用“英语(瑞士)”等特殊区域格式时,似乎存在问题。如果你把它改成“英国(英国)”一切正常。关于这个的信息我找到了here
希望这有助于仍然面临问题的人。
根据KB文章Considerations for server-side Automation of Office的说法,Microsoft不支持您的方案
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定的行为和/或Office在此环境中运行时出现死锁或死锁。
然后,本文将介绍服务器端自动化的替代方案,其中一个是Open XML。如果您还没有这样做,可能需要查看这篇文章。