PrintServerException - “…name is invalid” even though I can access the path from windows

依然范特西╮ 提交于 2019-12-13 06:14:30

问题


A line similar to the following threw the above exception:

PrintServer ps = new PrintServer(@"\\prntsrv");

When I use "Run..." on Windows the address above does work and take me to the list of print jobs so why does the line of code not work?


回答1:


Apparently, the address \\prntsrv was a DNS alias to \\prntserv and the PrintServer constructor was unable to deal with it. To get around this issue I used the following code (I could also use just the code in the catch block instead and it would work, but preferred not to):

        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;
            }
        }



回答2:


hey i was facing similar issue, this is what i observed and made following changes, just try and let me know.

This issue was occuring due to windows feature/role "Print and Document service" is missing on the system. This role is required for managing multiple printers or print servers and migrating printers to and from other windows servers.

To add the role Go To Control Panel->Turn windows feature on or off->click on check box "Print and Document Service"->install.

See with network administrator for installing this rule if you unable to add it.

After adding the role you can able to create print server object and get the all the printqueues on respective server.



来源:https://stackoverflow.com/questions/16262072/printserverexception-name-is-invalid-even-though-i-can-access-the-path-fr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!