我已经创建了一个打印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
您正在重定向输出但未读取它。这足以导致程序陷入僵局,等待有人释放它的输出。只是不要重定向。 –