过去几天我一直试图让这项工作正常运行,并尝试了所有建议的解决方案:
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)。我还在调试。
以下情况中的代码正在打印:
以下情况中的代码不打印:
应用程序池使用管理员帐户运行,并且“启用32位应用程序”在“高级设置”中设置为“真”。
万维网发布服务(W3SVC)允许服务与“属性”中选中的桌面进行交互。
如果有人知道如何解决这个问题,请告诉我。感谢。
答案 0 :(得分:0)
更改了Foxit Reader的Acrobat Reader(https://www.foxitsoftware.com/products/pdf-reader/)并解决了问题。命令行非常相似。