繁体   English   中英

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

[英]Overriding Configuration Values in config.json file in Azure Web App in ASP.Net 5

我有一个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应用程序中做同样的事情。

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

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

AppSettings:SiteEmailAddress

等等...(AppSettings在这里指的是你在config.json中使用的,与Azure App Settings的相似性是巧合的)

像你所做的AddEnvironmentVariables()是必须的。

假设你有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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM