使用Windows服务调用控制台应用程序,该应用程序使用lighthouse生成json

时间:2019-02-06 13:36:58

标签: c# windows-services console-application lighthouse

我知道标题听起来很复杂,但是我正在为网站建立监视系统。我有一个Windows服务,该服务以网站URL作为参数调用控制台应用程序。我选择使用Windows服务的原因是因为该服务必须运行而不停止,并且必须每5分钟调用一次控制台应用程序。将来,我将调用多个控制台应用程序以同时监视多个网站。我使用灯塔(https://developers.google.com/web/tools/lighthouse/)监视网站,这给了我JSON作为信息输出。

我这样调用控制台应用程序:

ProcessStartInfo info = new ProcessStartInfo(path);

info.Arguments = "https:\\stackoverflow.com";
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.CreateNoWindow = true;
info.ErrorDialog = false;
info.WindowStyle = ProcessWindowStyle.Hidden;

Process proc = Process.Start(info);

调用控制台应用程序没有问题,但是当控制台应用程序运行时,它不会给我提供json作为输出。它确实写入了文件(前4行),但是运行灯塔命令行不会给我输出。

FileStream fs = new FileStream("C:\\Users\\kenji\\Desktop\\test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(args[0]);
sw.Close();
PowerShell ps = PowerShell.Create();
ps.AddScript("lighthouse " + args[0] + " --output-path=C:\\Users\\kenji\\Desktop\\report.json --output json --chrome-flags='--headless'");
ps.Invoke();

在不使用Windows服务的情况下运行控制台应用程序不会出现任何问题。

有人知道如何解决此问题吗?

0 个答案:

没有答案