在我们的代码中,我们必须为用户提供可供选择的打印机列表。然后用户选择一台打印机并在打印前检查它是否有效。在带有IIS 6的Windows 2003服务器上,这可以正常工作。在带有IIS 7的Windows 2008服务器上,每次impersonate设置为true时都会失败。PrinterSettings.IsValid始终返回false
PrinterSettings printerSetting = new PrinterSettings();
printerSetting.PrinterName = ddlPrinterName.SelectedItem.Text;
if (!printerSetting.IsValid)
{
lblMsg.Text = "Server Printer is not valid.";
}
else
{
lblMsg.Text = "Success";
}
每次运行此代码时,只有将impersonate设置为true时,才会显示“服务器打印机无效”。如果impersonate设置为false,则显示成功消息。
模拟用户对打印机拥有完全的权利。
有没有办法找到打印机无效的实际原因? 我应该检查一下其他2008年的设置吗?
更新 当IIS7应用程序池选中“启用32位应用程序”时,我发现IsValid失败。这是必须检查的B/C我们正在使用第三方工具打印,它是一个32位应用程序。它目前不是这个测试的一部分,所以现在它不会导致这个错误。
取代 lblMsg.Text =“服务器打印机无效”;我加了 System.Drawing.Printing.InvalidPrinterException jorInvalidEx = new InvalidPrinterException(printerSetting); lblMsg.Text = jorInvalidEx.Message; 这显示消息“设置访问打印机<打印机名称>'无效。” – Jarrod 2010-05-22 14:58:37