【问题标题】:Get Configuration value from IHostBuilder in Net 6从 Net 6 中的 IHostBuilder 获取配置值
【发布时间】:2021-12-03 15:48:44
【问题描述】:

我正在使用 Net 6 创建一个 Worker 应用程序,我在 Program.cs 中有:

IHostBuilder builder = Host.CreateDefaultBuilder(args);

builder.ConfigureHostConfiguration(x => {
  x.AddJsonFile("settings.json", false, true);
  x.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true);
  x.AddEnvironmentVariables();
});

builder.UseSerilog(new LoggerBuilder(
  new LoggerOptions {
    ConnectionString = builder.Configuration.Get<Options>().ConnectionString
  }, 
).CreateLogger());

LoggerOptions 中,我需要从中获取OptionsConnectionString

我尝试了以下方法,因为这是我在使用 WebApplicationBuilder 时所做的:

builder.Configuration.Get<Options>().ConnectionString

但这并不能编译,因为 IHostBuilder 似乎没有配置属性。

我该怎么做?

【问题讨论】:

    标签: c# asp.net-core .net-6.0


    【解决方案1】:

    可以使用以下代码sn-p获取连接字符串:

    builder.Configuration.GetConnectionString("DefaultConnection")
    

    这里是示例 appsettings.json

    {
      "ConnectionStrings": {
          "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Initial Catalog=MyDB;Integrated Security=True"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用接受 HostBuilderContext 的配置服务重载来访问它。我通常不使用 LoggerBuilder:

      IHost host = Host.CreateDefaultBuilder(args)
          .UseSerilog((context, loggerConfiguration) =>
          {
              loggerConfiguration.ReadFrom.Configuration(context.Configuration);
          })
          .Build();
      
      await host.RunAsync();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-24
        • 2022-01-15
        • 2023-03-14
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多