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)上完美运行。
该代码仅使用 Adobe 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:
- Visual Studio Windows 7(64 位)
上的 2012 IIS Express
- IIS7 on Windows Server 2008 Standard(32 位)
代码在以下情况下不打印 PDF:
- Visual Studio Windows 7(64 位)
上的 2012 IIS7
- IIS8 on Windows 8.1(64 位)
应用程序池是 运行 管理员帐户,高级设置中的启用 32 位应用程序设置为 True。
万维网发布服务 (W3SVC) 在属性中勾选了允许服务与桌面交互。
如果有人知道如何解决这个问题,请告诉我。谢谢。
为 Foxit Reader (https://www.foxitsoftware.com/products/pdf-reader/) 更改了 Acrobat Reader,它解决了问题。命令行非常相似。
过去几天我一直在努力让它工作,并尝试了所有建议的解决方案,包括这里的解决方案:
System.Diagnostics.Process.Start not work from an IIS
此代码(ASP.NET MVC Web 应用程序)在 IIS7(Windows 7)上完美运行。
该代码仅使用 Adobe 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:
- Visual Studio Windows 7(64 位) 上的 2012 IIS Express
- IIS7 on Windows Server 2008 Standard(32 位)
代码在以下情况下不打印 PDF:
- Visual Studio Windows 7(64 位) 上的 2012 IIS7
- IIS8 on Windows 8.1(64 位)
应用程序池是 运行 管理员帐户,高级设置中的启用 32 位应用程序设置为 True。
万维网发布服务 (W3SVC) 在属性中勾选了允许服务与桌面交互。
如果有人知道如何解决这个问题,请告诉我。谢谢。
为 Foxit Reader (https://www.foxitsoftware.com/products/pdf-reader/) 更改了 Acrobat Reader,它解决了问题。命令行非常相似。