2013-04-28 8 views
0

линии, похожее на следующее скинул выше исключение:PrintServerException - «... имя недействительна», даже если я могу получить доступ к пути из окна

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

Когда я использую „Run ...“ на Windows, указанный выше адрес, работает и возвращает меня в список заданий на печать, так почему строка кода не работает?

ответ

0

, очевидно, адрес \\prntsrv был DNS псевдоним \\prntserv, а конструктор PrintServer не смог обработать его. Чтобы обойти эту проблему, я использовал следующий код (я также мог использовать только код в блоке поймать вместо этого и он будет работать, но предпочел не):

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

эй я столкнулся аналогичная проблема, это что я наблюдал и делал следующие изменения, просто попробуйте и дайте мне знать.

Эта проблема возникла из-за особенностей/роли Windows. «Система печати и документа» отсутствует в системе. Эта роль требуется для управления несколькими принтерами или серверами печати и переноса принтеров на другие серверы Windows.

Чтобы добавить роль Перейти на панель управления-> Включить или отключить функцию Windows, установите флажок «Печать и обслуживание документов» -> установить.

Обратитесь к администратору сети, чтобы установить это правило, если вы не можете его добавить.

После добавления роли вы можете создать объект сервера печати и получить все распечатки на соответствующем сервере.

+0

Я не думаю, что смогу проверить его в ближайшее время, если вообще. Во всяком случае, мои текущие настройки: НЕКОТОРЫЕ-ВКЛЮЧЕНЫ Услуги печати и документа (ВКЛ. Интернет-клиент печати, ВЫКЛ. Служба печати LPD, ВЫКЛ. Монитор порта LPR, ВЫКЛ. Управление сканированием, Вкл. Факс и сканирование Windows). Я предполагаю, что служба печати LPD должна быть включена, чтобы работать, но я не уверен, что я мог бы включить ее на стороне клиента вместе с нашим установщиком. – shwartz