A线路径抛出上述异常:PrintServerException - “......名称是无效的”,即使我可以访问类似于以下Windows
PrintServer ps = new PrintServer(@"\\prntsrv");
当我使用‘运行...’上Windows上述地址确实有效,并将我带到打印作业列表,那么为什么这行代码不起作用?
A线路径抛出上述异常:PrintServerException - “......名称是无效的”,即使我可以访问类似于以下Windows
PrintServer ps = new PrintServer(@"\\prntsrv");
当我使用‘运行...’上Windows上述地址确实有效,并将我带到打印作业列表,那么为什么这行代码不起作用?
显然,地址\\prntsrv
是\\prntserv
的DNS别名,而PrintServer
构造函数无法处理它。为了解决这个问题,我用下面的代码(我也可以在catch块只使用代码,而不是和它的工作,但最好不要):
try
{
// Create object to monitor the printer queue
PrintServer printServer = new PrintServer(serverPath);
mPrintQueue = printServer.GetPrintQueue(printerName);
}
catch (PrintServerException ex)
{
// If the problem might be creating the server because the name is an alias
if (ex.Message.Contains("printer name is invalid."))
{
string actualServerHostname = "\\\\" + Dns.GetHostEntry(serverPath.TrimStart('\\')).HostName;
// Create object to monitor the printer queue
PrintServer printServer = new PrintServer(actualServerHostname);
mPrintQueue = printServer.GetPrintQueue(printerName);
// Write to log about the use of a different address
}
else
{
throw;
}
}
嘿,我正面临着类似的问题,这是我观察到并做出了以下更改,请尝试让我知道。
由于系统上缺少windows功能/角色“打印和文档服务”,所以出现此问题。管理多台打印机或打印服务器以及将打印机迁移到其他Windows服务器以及从其他Windows服务器迁移打印机需要此角色
添加角色转到控制面板 - >打开或关闭窗口功能 - >单击复选框“打印和文档服务” - >安装。
如果无法添加它,请与网络管理员联系以安装此规则。
添加角色后,您可以创建打印服务器对象并获取相应服务器上的所有打印队列。
我不认为我可以很快测试它,如果有的话。无论如何,我目前的设置是:SOME-ON打印和文件服务(ON Internet打印客户端,OFF LPD打印服务,OFF LPR端口监视器,OFF扫描管理,ON Windows传真和扫描)。我想LPD打印服务应该可以正常工作,但我不确定我是否可以在客户端使用我们的安装程序打开它。 – shwartz 2014-04-10 11:14:35