我有一个asp.net core web api,我想在调用我的api时直接在stimulsoft报告中将报告打印到本地打印机(不带预览),我的代码是:
StiReport rpt = new StiReport() { UseProgressInThread = false };
rpt.Load(PrintTemplatePath);
rpt.RegBusinessObject("MyData", newData);
rpt.Print(false, new System.Drawing.Printing.PrinterSettings() { Copies = printCount, PrinterName = myPrinterName })
在 Visual Studio iis Express 上调试时一切正常,但是当我将其发布到本地主机 iis 时,rpt.Print(.....) 行出现以下错误
应用程序未运行时显示模式对话框或表单 在 UserInteractive 模式下不是有效的操作。指定 ServiceNotification 或 DefaultDesktopOnly 样式来显示 来自服务应用程序的通知。显示模式对话框或 当应用程序未在 UserInteractive 模式下运行时的表单是 不是有效的操作。指定 ServiceNotification 或 DefaultDesktopOnly 样式显示来自服务的通知 申请。
您收到的错误是因为 IIS 工作进程对打印机访问或任何桌面交互的权限有限。此限制是由于安全限制造成的,因为在 IIS 下运行的应用程序通常以非交互式受限模式运行。
为了达到您的要求,您可以尝试遵循以下建议:
以有权限访问打印机的用户身份运行iis应用程序池
您可以尝试使用客户端打印。通过这种方式允许从用户的浏览器直接与本地打印机交互。