我一直在尝试设置一个简单的端点服务,它位于服务器上,接受 Web 请求,然后以用户身份将作业打印到特定服务器上的特定打印队列,其凭据被传递到服务中。这是用于自动化测试,因此我们使用的用户具有有限的权限,因此安全性不是问题。
当我在没有模拟的情况下尝试此代码时:
PrintServer ps = new PrintServer(@"\\" + serverName, PrintSystemDesiredAccess.EnumerateServer);
response = "Created PrintServer object";
foreach (PrintQueue pq in ps.GetPrintQueues())
{
response = response + "~@~" + pq.Name;
}
它工作正常,并为我提供了远程服务器上的打印机列表,例如:
Created PrintServer object~@~Sc-4 Pull Port~@~Microsoft XPS Document Writer
当我尝试模拟时,我得到了这个:
System.Printing.PrintServerException:创建 PrintServer 对象时发生异常。Win32 错误:打印机名称无效。
在 System.Printing.PrintServer.Initialize(字符串路径,字符串 [] propertiesFilter,PrinterDefaults 打印机默认值)
在 System.Printing.PrintServer..ctor(字符串路径,PrintSystemDesiredAccess desiredAccess)
在 PrintService.PrintService.ImpersonatedInstalledPrinterList(字符串服务器名,字符串用户名,字符串用户密码,字符串域)
我一直无法弄清楚或在网上找到它为什么会抛出上述错误。我正在使用一个有效的域帐户,甚至给了我用来测试服务器上打印队列的完全权限的用户。当我尝试以模拟用户身份打印时遇到同样的错误,当我不执行模拟时发送打印作业没有问题。
谢谢你尽你所能的帮助,
月