我有一个网站,它依赖于在服务器模式下运行的 openoffice 将办公文档转换为 pdf 文件。
我们可以使用批处理文件启动此过程,但该过程不能可靠地运行。
我尝试创建一个服务以使用 SRVANY 保持进程运行,但这无法识别进程何时死亡并很好地重新启动。
我已经使用 System.Diagnostics.Process 类在 .Net 中编写了一个服务 - 它具有进程退出的事件处理。
服务启动正常并在我手动删除它时重新启动进程,但现在进程本身存在问题。
我可以在进程中看到 soffice.bin 和 soffice .exe,但是当我检查它是否正在侦听端口 8100 (netstat -a) 时,它不是(如果我使用原始批处理手动启动进程,它会这样做)。
myProcess.StartInfo.CreateNoWindow = True myProcess.StartInfo.UseShellExecute = True myProcess.StartInfo.FileName = "c:\Program Files (x86)\OpenOffice.org 3\program\soffice.exe" myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden myProcess.StartInfo.Arguments = "-accept = ""socket,host=127.0.0.1,port=8100;urp;"" - norestore - nofirststartwizard - 无头 - nologo" myProcess.EnableRaisingEvents = True myProcess.Start()
我试过设置 .Domain .UserName .Password
到管理员帐户,但没有运气。
如果我设置 .UseShellExecute = False 进程根本不会启动。
我会很感激任何建议让这个工作 - 或另一种阻止在服务器模式下运行的openoffice消失的方法(除了有一个每5分钟重新启动一次的计划任务......)
再次从该站点http://support.etouch.net/cm/wiki/?id=34626尝试了 SRVANY 选项, 但这也没有在端口 8100 上侦听 - 这表明我的机器上有一些东西(Server 2008 pc behind关闭 Windows 防火墙的公司防火墙)