使用 Web 服务在服务器中打印时出错

Error when printing in server with web service

我的网络服务使用 C# 从服务器打印机打印发票。在调试模式下调用此服务时工作正常,但在将其发送到 IIS 位置并从 Web 资源管理器 运行 项目后,我收到此错误:

No printers are installed.

System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal(String printer) at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal() at System.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettings pageSettings) at CrystalDecisions.CrystalReports.Engine.PrintOptions.CopyTo(PrinterSettings printer, PageSettings page)

问题是什么?同一台机器在 debug 模式下可以正常运行,但在 live 模式下不能正常运行。

这段代码抛出异常:

reportClass.PrintOptions.PrinterName = clsDeclaration.defultPrinter1;
reportClass.PrintToPrinter(numberOfCopies, true, 1, 1);

我得到了解决方案

它在开发机器上工作的原因是开发 Web 服务在您 windows 登录的上下文中是 运行,它可能设置了正确的打印机。在服务器上,它可能是 运行 作为网络服务或本地系统帐户。

解决方案是使用以下说明为系统帐户设置打印机。您还需要更改应用程序正在使用的应用程序池的标识以使用 LocalSystem 标识。