首页 > 解决方案 > 在 ASP.NET Core 3.1 中使用配置中的 ConnectionString

问题描述

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

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

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;      
  } 
} 

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

在:.NET 核心 3.1

标签: asp.net-coreserilogasp.net-core-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("...")

推荐阅读