Использование службы Windows для вызова консольного приложения, которое генерирует JSON с маяком
Я знаю, что название звучит сложно, но я делаю систему мониторинга для веб-сайтов. У меня есть служба Windows, которая вызывает консольное приложение с аргументом URL веб-сайта. Причина, по которой я решил использовать службу Windows, заключается в том, что служба должна работать без остановки и вызывать консольное приложение каждые 5 минут. В будущем я буду вызывать несколько консольных приложений для мониторинга нескольких веб-сайтов одновременно. Я отслеживаю сайты, используя маяк ( https://developers.google.com/web/tools/lighthouse/), который выдает мне JSON в качестве вывода с информацией.
Я называю консольное приложение следующим образом:
ProcessStartInfo info = new ProcessStartInfo(path);
info.Arguments = "https:\\stackru.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 строки), но запуск командной строки light house не дает мне вывода.
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 работает без проблем.
Кто-нибудь знает, как это исправить?