在我們的代碼中,我們必須爲用戶提供可供選擇的打印機列表。然後用戶選擇一臺打印機並在打印前檢查它是否有效。在帶有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