Использование службы Windows для вызова консольного приложения, которое генерирует JSON с маяком - PullRequest
0 голосов
/ 06 февраля 2019

Я знаю, что название звучит сложно, но я делаю систему мониторинга для веб-сайтов.У меня есть служба 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 строки), но выполнение командной строки 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 работает без проблем.

Кто-нибудь знает, как это исправить?

...