консоль обслуживания Windows c#.Writeln



Я написал, установил и успешно запустил службу Windows на c#, которая ничего не делает:) изначально я просто хочу, чтобы эхо-файлы были на консоли, запросы к БД, которые делает служба и т. д. Я использовал OnStart в своей службе, но из командной строки, когда я делаю сетевой запуск "моя служба", где появляются эти сообщения?



Я открыт для лучших путей. Я новичок в этом и чувствую свой путь через него шаг за шагом, эхом возвращаясь к консоли моего прогресса. Должен ли я вместо этого Эхо-запрос в журнал событий? Как разве я это делаю?(Я знаю, я знаю, погуглите его)



 protected override void OnStart(string[] args)
{
base.OnStart(args);
Console.WriteLine("Sham-Wow!");
}
588   4  

4 ответов:

Вы не можете написать консоль из службы Windows.

Я рекомендую вам использовать любую утилиту ведения журнала, такую какlog4net .

Второй альтернативой является запись в журнал событий (System.Diagnostics.EventLog)

Попробуйте Систему.Диагностика.След.WriteLine и вы увидите ваши сообщения в окне вывода Visual Studio или с помощью утилиты dbgview.

Если вы хотите запустить приложение как консольное приложение (чтобы вы могли видеть вывод консоли) или как службу, вы можете сделать это следующим образом:

  • Убедитесь, что ваше приложение скомпилировано как консольное приложение.
  • измените основной метод приложения, чтобы вы могли ветвиться для выполнения службы или консоли.
  • запустите приложение следующим образом, чтобы получить консоль "myservice.exe / консоль".

Прошли годы с тех пор, как я делал это так мог бы нужно немного подправить, но что-то вроде следующего:

static void Main(string[]] args) 
{ 
    if (args.Length == 0)
    {
          //Service entry
          System.ServiceProcess.ServiceBase[] services; 
          services = new System.ServiceProcess.ServiceBase[] { new WinService1() }; 
          System.ServiceProcess.ServiceBase.Run(services);
    }
    else
    {
          //Console entry
          OnStart(args);
    } 
}

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    Console.WriteLine("Sham-Wow!");
}

Это прекрасно для некоторых ранних экспериментов, но я бы рекомендовал Log4Net, как только вы разберетесь с вещами.

Наиболее распространенный / принятый способ передачи состояния службы-запись в журнал событий Windows.

Для облегчения отладки я бы рекомендовал поместить весь ваш бизнес-код в отдельный класс от компонента service. Затем вы можете использовать этот класс либо из своей службы, либо из консольного приложения. При создании Службы вы будете использовать консольное приложение для размещения вашего компонента, так что вы можете легко войти в код.

Comments

    Ничего не найдено.