我有一部分代码可以作为服务的一部分在本地正常运行。
sReportPath = objCrystalUtils.ExportReportToPDF("Report Name", iReportInfoID)
该代码作为服务的一部分运行,当我通过提供数据进行单元测试时,它最终将生成报告并进行打印。
当我从ajax调用在.ashx中运行完全相同的代码段时。报告已生成(我可以看到在磁盘上创建的pdf文件),但未进行打印。
oRpt.PrintToPrinter(objReport.DefaultAutoPrint, True, 0, 0)
在这两种情况下,都使用相同的代码来打印报告。(两种情况下objReport.DefaultAutoPrint = 0)
我唯一的想法是,调用此方法的代码的位置与账单本身的位置不同。
我要打印到的打印机是我的计算机上安装的网络打印机,并且我正在运行Windows 7 IIS 6.1
有什么想法吗?
编辑:
这是一个想法…如果我将一个作为单元测试在本地运行,而我通过一个通过IIS运行的Web应用程序来运行另一个,则用户ID和用户对默认打印机的访问是否有所不同?
因此,我将本地ASP,IUSR和SYSTEM用户添加到了打印机安全性中,并允许他们打印…没有骰子。因此,我检查了每个用户,并将其设置为可访问,并且没有用户被拒绝…因此,我认为这有点扼杀了这一道理。
我更改了帖子的名称,因为我不再认为该问题与ajax有关,因为如果我尝试在帖子后面的代码中执行相同的过程,而不是通过ajax调用运行它,那么我仍然会遇到相同的问题。
帕特里克(Patrick),对我来说,这是水晶报表的已知问题,它通过IIS从运行的应用程序中打印某些报表。
我之前遇到过同样的问题,在搜寻该问题时,我们得到了以下内容;
Report to be generated, exported, and then to be downloaded to client machine, so user can print it locally (say, report will be exported as PDf file, user can use print option of PDF reader).