使用 Interop 生成 `docx` 在终止 RDC 时不起作用

Generating `docx` using Interop not working on terminating RDC

我有一个 ASP.Net 框架 Web 应用程序,它试图从发票创建 .docx(或 .pdf)文件。

在我的本地机器上,在开发环境中,代码可以正常工作。

但是在生产服务器中我遇到了一个问题,访问 IIS_Users 到 "Microsoft Word 97 - 2003 Document"。

我通过实施以下问题的已接受答案来解决该问题。

Accessing Office Word object model through asp.net

但是现在,当我关闭远程桌面连接并尝试从网站获取文件时,我从服务器收到错误 500,当再次远程连接到服务器时,我可以下载文件并且我的代码在生产服务器上运行良好。

换句话说,当 RDP 断开时,IIS 无法访问 "Microsoft Word 97 - 2003 Document"。

我认为关闭 RDP 会导致用户注销,这就是 IIS_Users 无法访问 "Microsoft Word 97 - 2003 Document" 的原因。

我也用谷歌搜索了这个,但没有找到任何修复方法。有没有办法让用户在远程连接关闭后仍保持登录状态?

使用COM与word文档交互时,实际上是在与桌面交互

windows2008之后,windows服务不再支持与桌面交互,i也在运行svcHost中,参考:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc756339(v=ws.10)

这就是为什么您可以在 RDP 连接到您的服务器时使其正常工作,但在与 RDP

断开连接后无法获取代码 运行

已编辑,link由Lex Li提供,描述更详细。

使用 DocX 库,而不是互操作:

NuGet:

Install-Package DocX -Version 1.3.0 

GitHub: https://github.com/xceedsoftware/docx