Я пытался заставить это работать последние пару дней и пробовал все предлагаемые решения, включая то, что здесь:
System.Diagnostics.Process.Start не работает из IIS а>
Этот код (веб-приложение ASP.NET MVC) отлично работает в IIS7 (Windows 7).
Код просто распечатывает файл PDF с помощью Adobe Reader на локальном принтере (в интрасети) с сервера:
// print receipt
ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.FileName = acrobatReaderPath;
psInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(psInfo.FileName);
psInfo.Arguments = String.Format("/s /o /h /t \"{0}\" \"{1}\"", filePath, printerName);
psInfo.WindowStyle = ProcessWindowStyle.Hidden;
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = true;
Process process = Process.Start(psInfo);
Удостоверение пула приложений - это локальная привилегированная учетная запись. Как я уже сказал, он работает на IIS7.
Странно то, что я вижу запущенный фоновый процесс (AcroRd32.exe) в диспетчере задач, включая командную строку, используемую для его запуска. Если я копирую командную строку и запускаю ее, PDF-файл распечатывается без проблем.
Что-то мне не хватает?
Я знаю, что есть способы сделать это лучше. Предложения также приветствуются.
ОБНОВЛЕНИЕ:
Уточнение: проблема в том, что процесс не завершается и PDF-файл не печатается.
Видимо, проблема скорее в разрядности (32 против 64). Я все еще отлаживаю.
Код ПЕЧАТАЕТ файлы PDF в следующих сценариях:
- Visual Studio 2012 IIS Express в Windows 7 (64-разрядная версия)
- IIS7 в Windows Server 2008 Standard (32 бит)
Код НЕ ПЕЧАТАЕТ PDF-файлов в следующих случаях:
- Visual Studio 2012 IIS7 в Windows 7 (64-разрядная версия)
- IIS8 в Windows 8.1 (64 бит)
Пул приложений работает с учетной записью администратора, а для параметра «Включить 32-разрядные приложения» в дополнительных настройках установлено значение «Истина».
Служба публикации в Интернете (W3SVC) имеет параметр «Разрешить взаимодействие с рабочим столом», отмеченный в свойствах.
Пожалуйста, дайте мне знать, если кто-нибудь знает, как это решить. Спасибо.
AcroRd32.exe
запущен, но не печатает, значит, проблема связана с Acrobat, а не с IIS или вашим программным кодом, и ее следует обсудить со службой поддержки Adobe. - person Dai   schedule 03.08.2015