按照答案:\n .NET Core 3 Worker 服务设置依赖注入
\n\n我可以在 Worker.cs 类的“调试”或“发布”中获取设置\n但是当部署为 Windows 服务时,此值返回为 null
\n\n工人.cs
\n\npublic class Worker : BackgroundService\n{\n private readonly ILogger<Worker> _logger;\n private readonly ServiceSettings _serviceSettings;\n private readonly ServiceConfigurations _serviceConfigurations;\n\n public Worker(ILogger<Worker> logger, IOptions<ServiceConfigurations> serviceConfigurations, IOptions<ServiceSettings> serviceSettings) \n {\n _logger = logger;\n _serviceConfigurations = serviceConfigurations.Value;\n\n _logger.LogInformation($"Worker running at: {DateTime.Now}");\n _serviceSettings = serviceSettings.Value;\n\n string retornoPathLog = null;\n string PathLog = _serviceSettings.PathLog;\n\n if (!Directory.Exists(PathLog))\n {\n retornoPathLog = "Diret\xc3\xb3rio de LOG " + PathLog;\n Directory.CreateDirectory(PathLog);\n }\n\n //Configure Serilo for Logging\n …Run Code Online (Sandbox Code Playgroud) 我有一个关于 Worker Service 的 DI 问题,该问题在下面的另一篇文章中得到了解答。
如果我想添加一些帮助类并按如下方式注册怎么办。我如何使用该选项注入。因为我想,我错过了一些东西......
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostContext, config) =>
{
// Configure the app here.
config
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true);
config.AddEnvironmentVariables();
Configuration = config.Build();
})
.ConfigureServices((hostContext, services) =>
{
services.AddOptions();
services.Configure<MySettings>(Configuration.GetSection("MySettings"));
services.AddSingleton<RedisHelper>();
services.AddHostedService<Worker>();
});
}
Run Code Online (Sandbox Code Playgroud)
RedisHelper 类有一个像 Worker 这样的构造函数。
public static MySettings _configuration { get; set; }
public RedisHelper(IOptions<MySettings> configuration)
{
if (configuration != null)
_configuration = configuration.Value;
}
Run Code Online (Sandbox Code Playgroud)