使用Interop生成`docx`不工作终止RDC

问题描述 投票:3回答:2

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

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

但在生产服务器我有一个问题,访问IIS_Users到“Microsoft Word 97 - 2003文档”。

我通过实现以下问题的接受答案来解决这个问题。

Accessing Office Word object model through asp.net

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

换句话说,当RDP断开连接时,IIS无法访问“Microsoft Word 97 - 2003文档”。

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

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

asp.net windows iis permissions windows-server-2016
2个回答
1
投票

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

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

这就是为什么你可以让它在你的服务器RDP时工作,但是在与RDP断开连接后无法运行代码

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


1
投票

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

的NuGet:

Install-Package DocX -Version 1.3.0 

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

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