我有一个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文档”的原因。
我也用谷歌搜索了这个并没有找到任何解决方法。即使在远程连接关闭后,有没有办法让用户保持登录状态?
使用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更详细地描述。
使用DocX库,而不是互操作:
的NuGet:
Install-Package DocX -Version 1.3.0