В нашем коде мы должны предоставить пользователям список принтеров на выбор. Затем пользователь выбирает принтер и проверяется, чтобы убедиться, что он действителен перед печатью. На сервере Windows 2003 с IIS 6 это работает нормально. На сервере Windows 2008 с IIS 7 происходит сбой каждый раз, когда для олицетворения устанавливается значение true.
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 года, которые я должен проверить?
обновление
Я обнаружил, что IsValid дает сбой, когда в пулах приложений IIS7 установлен флажок «Включить 32-разрядные приложения». Это должно быть проверено, потому что мы используем сторонний инструмент для печати, и это 32-битное приложение. В настоящее время он не является частью этого теста, поэтому сейчас он не вызывает эту ошибку.