我有一行代码,可以作为服务的一部分在本地运行,并且运行得很好。
sReportPath = objCrystalUtils.ExportReportToPDF("Report Name", iReportInfoID)
该代码作为服务的一部分运行,当我通过向其提供数据对其进行单元测试时,它最终会构建报告并打印它。
当我通过 ajax 调用在 .ashx 中运行完全相同的代码时。报告已生成(我可以看到在磁盘上创建的 pdf 文件),但未进行打印。
oRpt.PrintToPrinter(objReport.DefaultAutoPrint, True, 0, 0)
在这两种情况下,都使用相同的代码来打印报告。 (两种情况下 objReport.DefaultAutoPrint = 0)
我唯一的想法是,调用此方法的代码的位置相对于账单本身的位置位于不同的位置。
我尝试打印的打印机是我的计算机上安装的网络打印机,并且我运行的是 Windows 7 IIS 6.1
有什么想法吗?
Edit:
这里有一个想法...如果我在本地运行一个作为单元测试,并通过通过 IIS 运行的 Web 应用程序运行另一个,则用户 ID 和用户对默认打印机的访问权限是否存在差异?
Edit:
因此,我将本地 ASP、IUSR 和 SYSTEM 用户添加到打印机安全性中,并允许他们打印……没有骰子。所以我检查了每个用户,它被设置为访问并且没有用户被拒绝......所以我认为这有点扼杀了这一推理。
Edit:
我更改了这篇文章的名称,因为我不再认为问题与 ajax 相关,因为如果我尝试在回发后面的代码中执行相同的过程,而不是从 ajax 调用运行它,我仍然会遇到同样的问题。