2009-04-09 6 views
4

У меня есть приложение, над которым я работаю, и я разрешаю пользователю выбирать принтер для использования в качестве своего принтера во время печати форм из приложения. Я использую .NET 2.0Что вызывает System.Drawing.Printing.PrinterSettings.InstalledPrinters для вывода Win32Exception «Сервер RPC недоступен»?

На экране настроек, я называю

System.Drawing.Printing.PrinterSettings.InstalledPrinters 

, чтобы получить список доступных принтеров.

На машине клиента, свойство выдает исключение:

System.ComponentModel.Win32Exception: The RPC server is unavailable 

Клиент сообщает, что окна показывает его принтер как «готов», и клиент может печатать тестовые страницы из принтера. Но я не смог воспроизвести эту проблему на местном уровне, и у меня заканчиваются идеи. Кто-нибудь есть идеи, что может вызвать эту проблему? Любые идеи или направления для поиска были бы полезными. Спасибо

ответ

2

Если вы можете распечатать, скорее всего, проблему безопасности. В противном случае я бы проголосовал за «мертвую службу буферизации», но, скорее всего, ваше приложение не имеет прав на общение со службой буферизации ...

+0

Да, это была мертвая служба буферизации. Установка драйверов принтера привела к тому, что принтер запустил службу буферизации. Я закончил тем, что нажал эту проблему на Производитель принтеров после того, как я выделил это исключение для конкретной установки принтера, а не для всех. –

0

Может ли это иметь какое-либо отношение к сетевым принтерам? RPC - это удаленный вызов процедур, возможно, это используется для обнаружения установленных сетевых принтеров?

После некоторых на прибегая к помощи ошибки:

В InstalledPrinters использует WMI для поиска принтеров. WMI в свою очередь использует RPC.

Наличие WMI возвращает ошибку своего рода может означать следующее:

  • MSDN Support
  • Это может иметь что-то делать со счетами: проверка/сетевую системой счетов для вашего приложения локальных/и попробуйте запустить заявление в соответствии с зарегистрированной учетной записи (пользователя + пароль)
  • проверки также форум пост, решение это для приложения ASP.NET: link

И полезный WMI resource для вашей проблемы.

+0

Принтеры на клиентской машине подключаются через USB. –

0

Либо служба RPC отключена, либо брандмауэр Windows блокирует ее.

1

У меня была аналогичная проблема с использованием PrinterSettings.InstalledPrinters , и причина в том, что приложение выполнялось с разрешениями «Частичный траст».

В Visual Studio перешел в «Свойства проекта \ Безопасность» и выбрал «Это приложение полного доверия».

Я не уверен, что это поможет вам, но сделало это для меня.

0

Другая возможность заключается в том, что также услуга PrintSpooler была установлена ​​на

инвалидов
3

Это то же самое происходит со мной в ОС Windows 7. Остановка и запуск диспетчера очереди печати в услуг исправления, пока не произойдет снова.

Следующие команды делают это быстро, чтобы сделать это:

net stop "print spooler" 
net start "print spooler" 

Примечание: Запустите командную строку с правами администратора. Я сделал пакетный файл, чтобы сделать это, потому что это происходит 4-5 раз в день во время разработки.

+0

Ничего себе. В моем случае у меня было веб-приложение ASP.Net, которое использовало Crystal Reports для создания PDF-файла. Оказывается, это вызывало исключение «(0x80004005):« RPC-сервер недоступен »в процессе создания PDF-файла. Я не уверен, зачем нужен спулер для запуска, но ваше решение устранило мою проблему! – neoscribe

Смежные вопросы