在 ASP.NET Core 3.1 中使用 Configuration 中的 ConnectionString

Use ConnectionString from Configuration in ASP.NET Core 3.1

我正在使用推荐的方法使用 ASP.NET Core 配置 Serilog。

如何从方法 Main 中的配置获取 ConnectionString 以配置 SQL 服务器接收器?

public class Program {
  public static Int32 Main(String[] args) {

    Log.Logger = new LoggerConfiguration()
      .MinimumLevel.Debug()
      .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
      .Enrich.FromLogContext()
      .WriteTo.Console()
      .CreateLogger();

    try {
      CreateHostBuilder(args).Build().Run();
      return 0;
    } catch (Exception exception) {
      return 1;
    } finally {
      Log.CloseAndFlush();
    }

  }

  public static IHostBuilder CreateHostBuilder(String[] args) {

    IHostBuilder builder = Host.CreateDefaultBuilder(args);

    builder
      .UseSerilog()
      .ConfigureWebHostDefaults(builder => {

      builder
        .ConfigureAppConfiguration((context, configuration) => {

          IWebHostEnvironment environment = context.HostingEnvironment;

          configuration
            .AddJsonFile("settings.json", false, true)
            .AddJsonFile($"settings.{environment.EnvironmentName}.json", false, true)
            .AddEnvironmentVariables();

        }) 
        .UseStartup<Startup>();

    });

    return builder;      
  } 
} 

我正在使用: - 序列号:2.9.0 - Serilog.Sinks.MSSqlServer:5.3.0

在: .NET 核心 3.1

您可以获取环境:

var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

然后使用它手动配置构建器,就像您在下面做的那样:

var configuration = new ConfigurationBuilder()
    .AddJsonFile("settings.json", false, true)
    .AddJsonFile($"settings.{environment}.json", false, true)
    .AddEnvironmentVariables()
    .Build();

然后像平常一样获取连接字符串:

var connectionString = configuration.GetConnectionString("...")