直接使用 Azure Web App 中的应用程序设置,而不是 appsettings.Production.json
Use Application settings from Azure Web App directly, not from appsettings.Production.json
我想使用生产环境的应用程序设置,如 Azure Web 应用程序中所定义:
See here
目前正在使用 appsettings*.json
文件在 Program.cs
中为正确的环境获取这些值:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
IHostingEnvironment env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>()
.Build();
这些值当前在 json 中定义,例如
"ConnectionStrings": {
"LocalizationAdminContext": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
},
"DbResourceConfiguration": {
"ConnectionString": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
}
我试图从 appsettings.production.json
中删除这些以强制它使用 Azure 中提供的那些,但它出错了。我会认为,因为它是在 Program.cs
中设置的,所以它将始终在相关环境 json 文件中搜索设置。
如何在配置中覆盖它以使用应用程序设置?最好仅用于生产环境。
好吧,我不确定这是否真的是问题所在,但无论如何它都是无用的代码。 CreateDefaultBuilder
,除其他外,配置各种配置提供程序,包括 appsettings.json
和 appsettings.{environment}.json
。然后它继续添加环境变量之类的东西。
充其量,您没有理由调用 ConfigureAppConfiguration
,因为这些文件 已经 通过调用 CreateDefaultBuilder
添加了。但是,对于如何添加配置也有一个操作顺序:即后来添加的配置提供程序覆盖以前添加的配置提供程序。因此,通过像这样再次添加 JSON 文件,您实际上是在使它们成为包含的 last 配置提供程序,这意味着它们会覆盖 everything.我相信 Azure 中的应用程序设置是作为环境变量添加的。这通常会使它们覆盖您的 JSON 文件中的任何内容,因为环境变量提供程序是在 JSON 提供程序之后添加的。但是,您现在已经翻转了脚本,使它们被 JSON.
覆盖
我不确定为什么从您的 JSON 中删除它们会导致错误,但我有理由相信,只需删除 ConfigureAppConfiguration
调用就可以使一切按预期工作。
我想使用生产环境的应用程序设置,如 Azure Web 应用程序中所定义: See here
目前正在使用 appsettings*.json
文件在 Program.cs
中为正确的环境获取这些值:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
IHostingEnvironment env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>()
.Build();
这些值当前在 json 中定义,例如
"ConnectionStrings": {
"LocalizationAdminContext": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
},
"DbResourceConfiguration": {
"ConnectionString": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
}
我试图从 appsettings.production.json
中删除这些以强制它使用 Azure 中提供的那些,但它出错了。我会认为,因为它是在 Program.cs
中设置的,所以它将始终在相关环境 json 文件中搜索设置。
如何在配置中覆盖它以使用应用程序设置?最好仅用于生产环境。
好吧,我不确定这是否真的是问题所在,但无论如何它都是无用的代码。 CreateDefaultBuilder
,除其他外,配置各种配置提供程序,包括 appsettings.json
和 appsettings.{environment}.json
。然后它继续添加环境变量之类的东西。
充其量,您没有理由调用 ConfigureAppConfiguration
,因为这些文件 已经 通过调用 CreateDefaultBuilder
添加了。但是,对于如何添加配置也有一个操作顺序:即后来添加的配置提供程序覆盖以前添加的配置提供程序。因此,通过像这样再次添加 JSON 文件,您实际上是在使它们成为包含的 last 配置提供程序,这意味着它们会覆盖 everything.我相信 Azure 中的应用程序设置是作为环境变量添加的。这通常会使它们覆盖您的 JSON 文件中的任何内容,因为环境变量提供程序是在 JSON 提供程序之后添加的。但是,您现在已经翻转了脚本,使它们被 JSON.
我不确定为什么从您的 JSON 中删除它们会导致错误,但我有理由相信,只需删除 ConfigureAppConfiguration
调用就可以使一切按预期工作。