dir.by  
  Поиск  
Программирование, разработка, тестирование
Windows Service (используя C#)
Загрузка параметров из appsettings.json для приложения C# Windows Service (библиотека .NET Core и использую Worker)
  Посмотрели 671 раз(а)    
 Загрузка параметров из appsettings.json для приложения C# Windows Service (библиотека .NET Core и использую Worker) 
последнее обновление: 17 апреля 2023
Скачать сервис с исходным кодом:
MyWorkerServiceJsonCore1.zip ...
размер: 4 kb
Шаг 1. Открываем Visual Studio
Если у вас не установлена Visual Studio нужно установить Visual Studio...
Открываем Visual Studio 2022
или
Открываем Visual Studio 2019
Шаг 2. Открываем проект C# Windows Service
Шаг 3. Добавляем код в файл Program.cs
Добавим строчки помечены синим цветом.
Это инициализация json файла с новым добаленным класом ApplicationOptions и новой секцией ApplicationOptions.
  C#     Файл Program.cs
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.EventLog;
using MyWorkerServiceCore1.Options;

namespace MyWorkerServiceCore1
{
     public class Program
     {
          public static string EventLogName = "My Worker Service1";
          public static string EventLogSource = "My App1";

          public static void Main(string[] args)
          {
               CreateHostBuilder(args).Build().Run();
          }

          public static IHostBuilder CreateHostBuilder(string[] args) =>
               Host.CreateDefaultBuilder(args)
               .ConfigureLogging(options => options.AddFilter<EventLogLoggerProvider>(level => level >= LogLevel.Information))
               .ConfigureServices((hostContext, services) =>
               {
                    IConfiguration configuration = hostContext.Configuration;
                    services.Configure<ApplicationOptions>(configuration.GetSection("ApplicationOptions"));

                    services.AddHostedService<Worker>()
                    .Configure<EventLogSettings>(config =>
                    {
                         config.LogName = EventLogName;
                         config.SourceName = EventLogSource;
                    });
               }).UseWindowsService();
     }
}
Шаг 4. Добавляем код в файл appsettings.json
Добавил новую секцию ApplicationOptions.
Добавил новый параметр MyName с значением Evgen.
  Файл appsettings.json
{
     "ApplicationOptions": {
          "MyName": "Evgen"
     },
     "Logging": {
          "LogLevel": {
               "Default": "Information",
               "Microsoft": "Warning",
               "Microsoft.Hosting.Lifetime": "Information"
          }
     }
}
Шаг 5. Создаем новый файл ApplicatioOptions.cs
Создадим новую папку Options вот так:
  D:/MyWorkerServiceCore1/Options
 
Внутри Options папки создадим новый файл ApplicatioOptions.cs
В этом файле класс ApplicatioOptions с параметром MyName совпадает с секцией из файла appsettings.json
  Файл ApplicationOptions.cs
using System.Text;

namespace MyWorkerServiceCore1.Options
{
     public class ApplicationOptions
     {
          public string MyName { get; set;}
     }
}
Шаг 6. Добавляем код в файл Worker.cs
  Файл Worker.cs
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using MyWorkerServiceCore1.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace MyWorkerServiceCore1
{
     public class Worker : BackgroundService
     {
          private readonly ILogger<Worker> _logger;
          private readonly ApplicationOptions _applicationOptions;

          public Worker(ILogger<Worker> logger , IOptions<ApplicationOptions> options)
          {
               _logger = logger;
               _applicationOptions = options.Value;
          }

          protected override async Task ExecuteAsync(CancellationToken stoppingToken)
          {
               while (!stoppingToken.IsCancellationRequested)
               {
                    _logger.LogInformation("User: " + _applicationOptions.MyName);

                    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                    await Task.Delay(1000, stoppingToken);
               }
          }
     }
}
Объяснение:
создаем объект applicatioOptions
public class Worker : BackgroundService
{
     private readonly ApplicationOptions _applicationOptions;

     public Worker(ILogger<Worker> logger , IOptions<ApplicationOptions> options)
     {
          _logger = logger;
          _applicationOptions = options.Value;
     }
}

Объяснение:
В конструкторе Worker
параметр IOptions<ApplicationOptions> options автоматически создается.
Потом внутри конструктора устанавливаем _applicationOptions = options.Value;.
В системный EventViewer показываем значение параметра MyName
_logger.LogInformation("User: " + _applicationOptions.MyName);


На экране увидим Evgen
Шаг 7. Запускаем проект
 
На заметку!
Чтобы запустить программу как WindowsService нужно:
регистрировать exe файл в системе и запускать как Windows Service...
 
← Предыдущая тема
Создаем новое приложение C# Windows Service (библиотека .NET Core и использую Worker)
 
Следующая тема →
Как открыть Notepad приложение из C# Windows Service | библиотека .NET Core и использую Worker
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Картинки

Windows Service (используя C#)  
Технология .NET Framework
Создаем новое приложение C# Windows Service (.NET Framework)
C# Windows Service (.NET Framework) с получением имени пользователя. Событие при входе/выходе пользователя из Windows
Создать папку "My Application" в папке "Application and Services logs" | Event Viewer
Технология .NET Core
Создаем новое приложение C# Windows Service (библиотека .NET Core и использую Worker)
Загрузка параметров из appsettings.json для приложения C# Windows Service (библиотека .NET Core и использую Worker)
Как открыть Notepad приложение из C# Windows Service | библиотека .NET Core и использую Worker
Делаем publish проекта (компилируем и собираем проект) "C# Windows Service" | библиотека .NET Core используя Worker
Как зарегистрировать exe file как Windows Service. Запуск/остановка Windows Service в системе Windows | библиотека .NET Core используя Worker

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика