C#Web API找不到重定向的打印机

时间:2018-07-05 11:55:53

标签: c# printing iis-8

我正在开发在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并完成了

  • 将站点的应用程序池设置为在我的帐户下运行(出于测试目的)
  • 安装了Internet打印角色
  • 安装了Internet Print Client功能

完成此操作后,默认打印机不再位于已安装的打印机列表中,并且没有可用的默认打印机。

为了使IIS托管站点可以看到重定向的打印机,我还必须进行哪些其他权限/更改?

2 个答案:

答案 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

https://blogs.msdn.microsoft.com/vijaysk/2009/03/08/iis-7-tip-3-you-can-now-load-the-user-profile-of-the-application-pool-identity/

我不是IIS专家,但是很多年前,计划任务无法加载用户配置文件时遇到了一些问题。