C# Web API 找不到重定向的打印机
C# Web API cannot find Redirected Printer
我正在开发 Web API,它部署在 Windows Server 2012 R2 上的 IIS 8 中。它要求将文档从服务器打印到网络打印机。
我正在使用重定向打印机的 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 功能
执行此操作后,默认打印机不再出现在已安装打印机列表中,并且没有可用的默认打印机。
我还需要做什么 permissions/changes 才能让 IIS 托管站点可以看到重定向的打印机?
IIS 运行 下的帐户需要能够访问您要使用的打印队列。默认情况下,它没有。维护服务器的人需要授予帐户所需的权限。
请注意,这不是来自您的 RDP 会话的 "redirected printer"。需要在 IIS 服务器上配置打印机,并且 IIS 帐户是 运行 需要访问它。
RDP 会话已隔离。
从您的服务器端代码,您可以正常打开打印机并执行任何您想要的操作,因为它只是一台普通打印机。
只是一个想法:你检查过 "Load User profile" 了吗?
参见
Security exceptions in ASP.NET and Load User Profile option in IIS 7.5
和
我不是 IIS 专家,但多年前遇到过一些问题,计划任务未加载用户配置文件。
我正在开发 Web API,它部署在 Windows Server 2012 R2 上的 IIS 8 中。它要求将文档从服务器打印到网络打印机。
我正在使用重定向打印机的 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 功能
执行此操作后,默认打印机不再出现在已安装打印机列表中,并且没有可用的默认打印机。
我还需要做什么 permissions/changes 才能让 IIS 托管站点可以看到重定向的打印机?
IIS 运行 下的帐户需要能够访问您要使用的打印队列。默认情况下,它没有。维护服务器的人需要授予帐户所需的权限。
请注意,这不是来自您的 RDP 会话的 "redirected printer"。需要在 IIS 服务器上配置打印机,并且 IIS 帐户是 运行 需要访问它。
RDP 会话已隔离。
从您的服务器端代码,您可以正常打开打印机并执行任何您想要的操作,因为它只是一台普通打印机。
只是一个想法:你检查过 "Load User profile" 了吗? 参见
Security exceptions in ASP.NET and Load User Profile option in IIS 7.5
和
我不是 IIS 专家,但多年前遇到过一些问题,计划任务未加载用户配置文件。