您可以使用AddEnvironmentVariables 属性来实现override appsettings on azure 到本地设置。
首先在门户中配置设置:
注意:这里的值为空。
要覆盖应用设置部分中的嵌套键,我们可以使用完整路径 SettingsA:PropA 作为名称或使用双下划线 SettingsA__PropA 定义一个变量。你可以参考这个article。
在本地,您可以配置如下:
在 Startup.cs 中:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
configuration = builder.Build();
}
public IConfiguration configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOptions();
services.Configure<SettingsOptions>(configuration.GetSection("SettingsA"));
}
在 appsettings.json 中:
{"SettingsA": {
"PropA": ["a","b"]
}
}
在 HomeController 中:
private readonly IOptions<SettingsOptions> options;
public HomeController(IOptions<SettingsOptions> options)
{
this.options = options;
}
public IActionResult Index()
{
var value = options.Value;
ViewBag.Index = value.PropA+"success";
return View();
}
在设置选项中:
public class SettingsOptions
{
public string SettingsA { get; set; }
public string PropA { get; set; }
}
将项目发布到 azure 后,它将覆盖 PropA 值。
有关如何从 asp.net core 读取 appsetting 的更多详细信息,请关注此case。