ASP.NET Process.Start 不适用于 IIS8 (Windows 8.1)

ASP.NET Process.Start not working on IIS8 (Windows 8.1)

过去几天我一直在努力让它工作,并尝试了所有建议的解决方案,包括这里的解决方案:

System.Diagnostics.Process.Start not work from an IIS

此代码(ASP.NET MVC Web 应用程序)在 IIS7(Windows 7)上完美运行。

该代码仅使用 Adob​​e Reader 在本地打印机(内联网)中从服务器打印 PDF 文件:

// 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:

代码在以下情况下不打印 PDF:

应用程序池是 运行 管理员帐户,高级设置中的启用 32 位应用程序设置为 True。

万维网发布服务 (W3SVC) 在属性中勾选了允许服务与桌面交互。

如果有人知道如何解决这个问题,请告诉我。谢谢。

为 Foxit Reader (https://www.foxitsoftware.com/products/pdf-reader/) 更改了 Acrobat Reader,它解决了问题。命令行非常相似。