我已經創建了一個打印PDF文件的服務。當我通過一個System.Process對象調用FoxitReader,向它發送控制檯命令時,該服務什麼都不做。我討論了Session 0隔離,但我的服務不調用GUI應用程序,它只是在可執行文件中執行命令。爲什麼我的Windows服務無法執行外部應用程序?
這是我的代碼:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "FoxitReader.exe";
proc.StartInfo.Arguments = " /t " + '"' + nombreArchivo + '"' + " " + '"' + nombreImpresora + '"';
EventLog.WriteEntry("InboundServicioImpresion", "Comando impresion:" + proc.StartInfo.FileName + proc.StartInfo.Arguments);
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
注:FoxitReader.exe包括在服務包;它安裝在與服務相同的文件夾中。
當代碼錶明它必須做時,服務啓動並寫入事件日誌,並且它不會崩潰或拋出任何異常(每個方法都由try-catch控制)。此外,它能夠將文件從一個文件夾移動到另一個文件夾。唯一不起作用的是用福克斯,Adobe Reader或sumatraPDF打印。
任何想法爲什麼它不工作?
在此先感謝,埃斯特班。
運行爲哪些用戶服務?打印機是否嘗試打印到本地服務所在的盒子或者是網絡打印機? – user957902
您正在重定向輸出但未讀取它。這足以導致程序陷入僵局,等待有人釋放它的輸出。只是不要重定向。 –