Vla*_*lin 6 .net c# environment-variables .net-core asp.net-core-1.1
我在我的 API 中使用了 .NET Core 1.1,但遇到了一个问题:
appsettings.json和环境变量。IOptions。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>()?
要对环境变量执行相同的操作,只需用冒号 (:) 分隔级别,例如
HitchhikersGuideToTheGalaxy:MeaningOfLife.
ConnectionStrings:ElasticSearchUrl在您的情况下,您将按照问题中提到的方式使用。
另请注意以下事项:
然而,当您部署到 IIS 时,事情会变得有点棘手,而且不幸的是,缺少有关使用 IIS 配置的文档。您进入服务器的系统设置并配置所有环境变量。然后,您将应用程序部署到 IIS,然后它...就会爆炸,因为它缺少那些必要的设置。
事实证明,为了在 IIS 中使用环境变量,您需要编辑 App Pool 的高级设置。在那里,您会找到一个名为“加载用户配置文件”的设置。将其设置为True。然后,回收应用程序池以加载到环境变量中。注意:即使您的环境变量被添加为“系统变量”而不是“用户变量”,您也必须执行此操作。
| 归档时间: |
|
| 查看次数: |
9528 次 |
| 最近记录: |