如何使用环境变量覆盖ASP.NET Core配置阵列设置 [英] How to override ASP.NET Core configuration array settings using environment variables

查看:57
本文介绍了如何使用环境变量覆盖ASP.NET Core配置阵列设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

TL;DR

In an ASP.NET Core app, I have an appsettings.json config file which uses a JSON array to configure a collection of settings.

How do I override a setting of one of the array objects using environment variables?

Background

I'm using Serilog in an ASP.NET Core application and using the Serilog.Settings.Configuration, to allow it to be configured using appsettings.json.

The configuration is like this:

{
  "Serilog": {
    "Using":  ["Serilog.Sinks.Literate"],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "File", "Args": { "path": "%TEMP%\\Logs\\serilog-configuration-sample.txt" } }
    ],
    "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
    "Properties": {
        "Application": "Sample"
    }
  }
}

When deployed, I want to override some of the settings, e.g. the MinimumLevel, and the path to the log file. My preferred option is to do this via environment variables as I'm deploying to an Azure App Service, so I'll use the App settings through the Azure management portal (these are realised as environment variables).

I can easily set the MinimumLevel by adding an environment variable with the name: Serilog:MinimumLevel and the application name Serilog:Properties:Application.

What is the format for specifying a setting with an array?

解决方案

After looking at the configuration in the debugger I found the answer.

  • Serilog__WriteTo__0__Args__path (All platforms)
  • Serilog:WriteTo:0:Args:path (Windows)
  • Serilog--WriteTo--0--Args--path (sourced From Azure Key Vault)

Note: The Configuration in ASP.NET Core documentation now covers this.

So I need to use the array index (zero-based) as if it were a name.

Here is the screenshot of the debugger, also (thanks to Victor Hurdugaci in the comments), the unit tests are a good place to look for examples.

这篇关于如何使用环境变量覆盖ASP.NET Core配置阵列设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆