从WCF Web服务进行服务器端打印

时间:2018-07-17 13:50:53

标签: c# web-services wcf printing server-side

我被困了一个多星期,试图从共享网络打印机上的WCF Web服务进行打印。我在网络上的任何地方都找不到任何解决方案。

因此,有一台带有IIS 10的VM Windows 2016 Web服务器托管WCF Web服务。该Web服务应该能够在连接到网络中其他计算机的共享网络打印机上打印文档。该共享网络打印机已安装在Web服务器上,并且可以从任何桌面应用程序正常打印。但是,当我调用Web服务方法来打印某些内容时,它将无法打印。

我尝试了在网上找到的所有内容。 我尝试对IIS应用程序池使用不同的帐户。当我使用任何内置帐户(LocalService,LocalSystem,NetworkService,ApplicationPoolIdentity)时,代码中均未列出任何打印机。当我使用本地管理员帐户时,该服务会显示已安装的打印机,但出现错误:用于访问打印机的设置无效。顺便说一句,我正在使用该帐户登录服务器,并且可以使用同一台打印机正常打印(例如测试页或从NotePad)。

我还尝试了Microsoft的注册表黑客:http://support.microsoft.com/kb/184291/en-us

我试图模拟其他用户,同时也避免了模拟。

我还创建了一个用于打印的小型桌面应用程序,当我从命令提示符启动它时,它可以很好地打印。但是,当我从服务启动相同的过程时,再次出现前面提到的问题。

我什至在不同的环境(不同的计算机,但配置相同)中尝试了所有操作,并且该服务的行为相同。

我不会在这里发布Web服务C#代码,因为我确定代码不是问题。相同的代码在我的开发机器上以及在Web服务器上的桌面应用程序中使用时都能很好地打印。问题出在Web服务正在使用的帐户特权中。

当然,所有用户都有权打印和管理打印机。

是否可以从Web服务进行打印?也许我正在尝试做不推荐或不可能做的事情?

1 个答案:

答案 0 :(得分:0)

我只是想结束这个问题,并提供解决问题的解决方案。

经过数周的尝试,我放弃了让Web服务调用本地打印机的尝试。拜托,不要去那里。

该系统的初始体系结构是桌面应用程序为许多不同功能(其中包括打印文档)调用Web服务。但是我必须更改它,并开发一个用于打印的小型控制台应用程序,因此该桌面应用程序不会通过Web服务进行打印,而是使用参数调用该小型控制台应用程序。不太优雅,但是可以。