我知道标题听起来很复杂,但是我正在为网站建立监视系统。我有一个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服务的情况下运行控制台应用程序不会出现任何问题。
有人知道如何解决此问题吗?