我正在开发在Windows Server 2012 R2的IIS 8中部署的Web API。它要求将文档从服务器打印到网络打印机。
我正在使用具有重定向打印机的RDP会话进行开发,该打印机也已设置为我的默认打印机。
我已经创建了一个虚拟的概念证明,作为控制台应用程序,以了解进行这项工作所需的条件。
虚拟控制台使用以下代码查找打印机
var ps = new PrinterSettings();
foreach(var p in PrinterSettings.InstalledPrinters)
{
var name = p as string;
Console.WriteLine(name);
}
作为控制台应用程序运行时,它将使用默认的重定向打印机并正常工作。
我已将此代码移至Web API并完成了
完成此操作后,默认打印机不再位于已安装的打印机列表中,并且没有可用的默认打印机。
为了使IIS托管站点可以看到重定向的打印机,我还必须进行哪些其他权限/更改?
答案 0 :(得分:0)
运行IIS的帐户需要有权访问要使用的打印队列。默认情况下不是。谁维护服务器,都需要向帐户授予所需的权限。
请注意,这将不是RDP会话中的“重定向的打印机”。需要在IIS服务器上配置打印机,并且根据需要运行IIS帐户才能访问它。
RDP会话被隔离。我不相信有一种方法(至少不是一种干净的,有文件记录的稳定方法)允许服务器进程访问RDP会话中的资源,但是您可以使用正常的打印机配置过程完全允许它自己访问。 / p>
在服务器端代码中,您将正常打开打印机并执行所需的任何操作,因为它只是一台普通打印机。
答案 1 :(得分:0)
一个想法:您是否选中了“加载用户个人资料”? 参见
Security exceptions in ASP.NET and Load User Profile option in IIS 7.5
和
我不是IIS专家,但是很多年前,计划任务无法加载用户配置文件时遇到了一些问题。