Dans notre code, nous devons donner aux utilisateurs une liste d'imprimantes à choisir. L'utilisateur choisit alors une imprimante et vérifie qu'elle est valide avant l'impression. Sur un serveur Windows 2003 avec IIS 6, cela fonctionne très bien. Sur un serveur Windows 2008 avec IIS 7, il échoue chaque fois que impersonate est défini sur true.PrinterSettings.IsValid retourne toujours false
PrinterSettings printerSetting = new PrinterSettings();
printerSetting.PrinterName = ddlPrinterName.SelectedItem.Text;
if (!printerSetting.IsValid)
{
lblMsg.Text = "Server Printer is not valid.";
}
else
{
lblMsg.Text = "Success";
}
Chaque fois que ce code est exécuté, l'affiche « Printer Server n'est pas valide », seulement si usurper l'identité est définie sur true. Si l'option impersonate est définie sur false, le message de réussite s'affiche.
L'utilisateur d'emprunt d'identité a tous les droits sur l'imprimante.
Existe-t-il un moyen d'identifier la raison réelle pour laquelle l'imprimante n'est pas valide? Y a-t-il d'autres paramètres que je devrais vérifier en 2008? J'ai trouvé que IsValid échoue lorsque les pools d'applications IIS7 ont "Activer les applications 32 bits" est vérifiée. Cela doit être vérifié b/c nous utilisons un outil tiers pour imprimer avec, et il s'agit d'une application 32 bits. Il ne fait actuellement pas partie de ce test, donc maintenant il ne cause pas cette erreur.
à la place de lblMsg.Text = "L'imprimante serveur n'est pas valide"; J'ai ajouté System.Drawing.Printing.InvalidPrinterException jorInvalidEx = new InvalidPrinterException (printerSetting); lblMsg.Text = jorInvalidEx.Message; Le message "Paramètres d'accès à l'imprimante" "ne s'affiche pas." –
Jarrod