ASP.NET Process.Start не работает в IIS8 (Windows 8.1)

Я пытался заставить это работать последние пару дней и пробовал все предлагаемые решения, включая то, что здесь:

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) имеет параметр «Разрешить взаимодействие с рабочим столом», отмеченный в свойствах.

Пожалуйста, дайте мне знать, если кто-нибудь знает, как это решить. Спасибо.


person Luis C.    schedule 03.08.2015    source источник
comment
не работает не является действительным описанием проблемы. С какой точной проблемой вы столкнулись? Если AcroRd32.exe запущен, но не печатает, значит, проблема связана с Acrobat, а не с IIS или вашим программным кодом, и ее следует обсудить со службой поддержки Adobe.   -  person Dai    schedule 03.08.2015
comment
Почему бы вам не зафиксировать результат процесса? См. Это: stackoverflow.com/a/285841/1623249   -  person Maria Ines Parnisari    schedule 03.08.2015
comment
Чтобы уточнить, проблема в том, что процесс не завершается и PDF-файл не печатается. Кроме того, я попытался запустить файл .bat, чтобы исключить проблему с Acrobat, и получил тот же результат. Я провел несколько тестов, фиксируя выходные данные процесса, например, предложенный l19, и команда вызывается правильно. Судя по всему, процесс выполняется, но никогда не заканчивается. Я добавил .WaitForExit (), и веб-страница так и не ответила. Вы предлагаете что-нибудь еще, что я могу попробовать? Большое спасибо за Вашу помощь.   -  person Luis C.    schedule 05.08.2015


Ответы (1)


Изменен Acrobat Reader для Foxit Reader (https://www.foxitsoftware.com/products/pdf-reader/) и это решило проблему. Командная строка очень похожа.

person Luis C.    schedule 08.08.2015