«Принтеры не установлены».проблема при использовании листа взаимодействия Excel 2003. PageSetup через службу WCF - PullRequest
0 голосов
/ 07 мая 2010

У нас есть служба WCF, которая генерирует файл Excel из шаблона и возвращает его клиенту в байтовом массиве. По какой-то причине мы получаем ошибку при попытке сделать это:

sheet.PageSetup.CenterHeader = sheet.PageSetup.CenterHeader.Replace("[customerName]", customerName).Replace("[dateTime]", date.ToShortDateString());

Когда он попадает в эту строку, мы получаем это сообщение об ошибке:

No printers are installed. To install a printer:
In Microsoft Windows 2000, click Start, point to Settings, and then click Printers. Double-click Add Printer.
In Microsoft Windows XP, click Start, and then click Printers and Faxes. Under Printer Tasks, click Add a printer.
Follow the instructions in the wizard.

Служба работает под учетной записью LocalSystem. Когда мы впервые развернули этот сервис, он был на компьютере с архитектурой x64 и имел ту же проблему. Наша среда разработки - x86, поэтому мы перенесли сервис на другой сервер x86, и некоторое время он работал нормально. Недавно он перестал работать и теперь снова выдает нам это сообщение об ошибке. Я почти уверен, что это было из-за массового обновления Windows, которое было сделано недавно на сервере приложений.

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

На машине установлены принтеры как для учетных записей домена, так и для локальных учетных записей. Я также попытался запустить службу под другой учетной записью, но затем я не смог подключиться к службе из-за какой-то ошибки SSPI. Мы попытались использовать учетную запись Network Service, но затем приложение вообще не увидело службу. Мы перезапускали сервис после каждого изменения, но безрезультатно.

Что я знаю о части «PageSetup» объекта листа, так это о том, что для доступа к нему необходим принтер, даже если вы не печатаете. Мне не удалось найти способ заставить компьютер думать, что в учетной записи LocalSystem установлен принтер.

1 Ответ

0 голосов
/ 07 мая 2010

Мы выяснили проблему, мой конфигурационный файл все еще указывал на сервер x64: (

Что касается того, почему он не будет работать на x64 (насколько мне известно) - поскольку Office 2003 - x86, для корректной работы ему необходим диспетчер очереди печати x86. Я не знаю ни одного способа получить диспетчер очереди печати x86 на ОС x64, поэтому мы просто прикрепили его на сервер x86.

...