Asp.net 使用互操作生成“docx”不用于终止RDC

Asp.net 使用互操作生成“docx”不用于终止RDC,asp.net,windows,iis,permissions,windows-server-2016,Asp.net,Windows,Iis,Permissions,Windows Server 2016,我有一个ASP.Net framework web应用程序,它试图从发票创建.docx(或.pdf)文件 在我的本地机器上,在开发环境中,代码可以很好地完成它的工作 但在生产服务器中,我遇到了一个问题,即访问IIS_用户访问“MicrosoftWord97-2003文档” 我通过实现以下问题的公认答案来解决该问题 但现在,当我关闭远程桌面连接并尝试从网站获取文件时,我从服务器获得错误500,当再次远程到服务器时,我可以下载文件,我的代码在生产服务器上运行良好 换句话说,当RDP断开连接时,II

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

在我的本地机器上,在开发环境中,代码可以很好地完成它的工作

但在生产服务器中,我遇到了一个问题,即访问IIS_用户访问“MicrosoftWord97-2003文档”

我通过实现以下问题的公认答案来解决该问题

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

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

我认为关闭RDP会导致用户注销,这就是为什么IIS_用户无法访问“MicrosoftWord97-2003文档”


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

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

windows 2008之后,windows服务不再支持与桌面交互,iis也在svcHost内运行,请参阅:

这就是为什么您可以在RDP连接到服务器时使其工作,但在断开与RDP的连接后无法运行代码的原因


编辑后,Lex Li提供了更详细的说明。

使用DocX库,而不是interop:

努吉:

Install-Package DocX -Version 1.3.0 

GitHub:

我不确定我是否理解正确,但依赖服务帐户用户通过RDP登录的流程听起来有根本性的缺陷。@Filburt请解释更多。不要使用Interop创建Word或Excel。它会产生各种各样的问题,就像你遇到的问题一样。使用专门的库。@MohammadRN我认为Elendil的回答很好地解释了这一点。我自己也没有使用过,但也许?那是不正确的。贵公司有一篇关于这方面的官方文章