覆盖ASP.Net 5中Azure Web App中config.json文件中的配置值

时间:2015-11-22 13:31:30

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

我有一个ASP.Net 5应用程序,其中我有一些配置值存储在config.json文件中。我的config.json文件是这样的。

{
  "AppSettings": {
    "SiteEmailAddress": "some@email.com",
    "APIKey": "some_api_key"
  }
}

我正在设置config.json文件,以便在Startup.cs文件中使用。

public static IConfigurationRoot Configuration;

public Startup(IApplicationEnvironment appEnv) {

    var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
                .AddJsonFile("config.json")
                .AddEnvironmentVariables();
    Configuration = builder.Build();
}

并像这样访问配置设置..

var email = Startup.Configuration["AppSettings:SiteEmailAddress"];

在ASP.Net早期,我们可以使用Web.Config文件存储这些应用程序设置,并在“Azure应用程序设置”部分的“应用程序设置”中覆盖这些应用程序设置,并且不会出现任何问题。但是我怎样才能在ASP.Net 5 app中做同样的事情。

如何覆盖Azure中“应用程序设置”部分中的config.json文件中的配置值。

2 个答案:

答案 0 :(得分:19)

在Azure中将它们添加为应用程序设置,就像您习惯的那样。 对于嵌套配置值,请使用

AppSettings:SiteEmailAddress

Etc ...(这里的AppSettings指的是你在config.json中使用的内容,与Azure App Settings的相似之处是偶然的)

AddEnvironmentVariables()就像你需要的那样才能工作。

答案 1 :(得分:0)

假设你有appsettings.json,你可以添加另一个文件appsettings。{Environment} .json,即appsettings.Production.json。只有生产文件中定义的设置才会覆盖appsettings.json中的设置。 现在,将以下内容添加到Startup

的构造函数中
var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true);

接下来,您应该去launchSettings.json,其中定义了所有服务器并将环境变量更新为Production。例如,

"web": {
  "commandName": "web",
  "environmentVariables": {
    "Hosting:Environment": "Production"
  }

现在部署到azure。