【问题标题】:How to use appsettings.json in Worker Service in .Net 3.1如何在 .Net 3.1 的 Worker Service 中使用 appsettings.json
【发布时间】:2021-05-15 17:41:42
【问题描述】:

当我尝试运行我的 Windows 服务时,该服务没有启动并且我收到以下错误。

.NET Core 版本:3.1.11 说明:进程因未处理的异常而终止。 异常信息:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。找到的程序集的清单定义与程序集引用不匹配。 (0x80131040)

appsettings.json

{
   "myservice": {
    "production": "No",
    "staging": "No",
    "development": "Yes",
   }
}

public class Options
{
   public string Production { get; set; }
   public string Staging { get; set; }
   public string Development { get; set; }
}

程序.cs

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

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
                services.Configure<Options>(hostContext.Configuration.GetSection("myservice"));
                services.AddHostedService<Worker>();
                services.AddTransient<Options>(_ => _.GetRequiredService<IOptions<Options>>().Value);
            })
    .UseWindowsService();
   }

Worker.cs

    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private BackgroundJobServer _server;
        private readonly Options _options; 
   
        public Worker(ILogger<Worker> logger, IOptions<Options> options)
        {
          _logger = logger;
          _options = options.Value;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
          _server = new BackgroundJobServer();
          while (!stoppingToken.IsCancellationRequested)
          {
              await Task.Delay(1000, stoppingToken);
          }
        }
    }

我尝试了不同的选项,但无法解决问题。感谢您的帮助。

【问题讨论】:

  • 您尝试在 .NET Core 3.1 应用程序下使用 .NET 5 库,这是无效的。

标签: c# visual-studio-2019 backgroundworker .net-core-3.1 appsettings


【解决方案1】:

您似乎将 nuget 包更新为与您的框架版本不兼容的版本(.net core 5.0 而不是 3.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2017-06-14
    • 2020-09-15
    • 2018-06-25
    • 2023-02-09
    相关资源
    最近更新 更多