我有一个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文件中的配置值。
答案 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。