小编Vla*_*lin的帖子

.NET Core 中的环境变量配置

我在我的 API 中使用了 .NET Core 1.1,但遇到了一个问题:

  1. 我需要有两个级别的配置:appsettings.json和环境变量。
  2. 我想通过DI用于我的配置IOptions
  3. 我需要环境变量来覆盖appsettings.json值。

所以到目前为止我是这样做的:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddEnvironmentVariables();
}

public IServiceProvider ConfigureServices(IServiceCollection services)
{
     // Something here
     services.Configure<ConnectionConfiguration>(options =>
            Configuration.GetSection("ConnectionStrings").Bind(options));
     // Something there
}
Run Code Online (Sandbox Code Playgroud)

用我这样的appsettings.json作曲

{
    "ConnectionStrings": {
        "ElasticSearchUrl": "http://localhost:4200",
        "ElasticSearchIndexName": "myindex",
        "PgSqlConnectionString": "blablabla"
    }
}
Run Code Online (Sandbox Code Playgroud)

我将所有配置映射到我的类ConnectionConfiguration.cs。但是我也无法映射环境变量。我尝试了以下名称:ConnectionStrings:ElasticSearchUrl, ElasticSearchUrl,甚至尝试指定前缀 to.AddEnvironmentVariables("ConnectionStrings")没有任何结果。

我应该如何命名环境变量以便它可以被映射services.Configure<TConfiguration>()

.net c# environment-variables .net-core asp.net-core-1.1

6
推荐指数
2
解决办法
9528
查看次数