如何使用环境变量覆盖 ASP.NET 核心配置数组设置
How to override ASP.NET Core configuration array settings using environment variables
在 ASP.NET 核心应用程序中,我有一个 appsettings.json
配置文件,它使用 JSON 数组来配置一组设置。
如何使用环境变量覆盖数组对象之一的设置?
背景
我正在使用 Serilog in an ASP.NET Core application and using the Serilog.Settings.Configuration,以允许使用 appsettings.json
进行配置。
配置是这样的:
{
"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"
}
}
}
部署后,我想覆盖一些设置,例如MinimumLevel 和日志文件的路径。我的首选是在我部署到 Azure 应用服务时通过环境变量来执行此操作,因此我将通过 Azure 管理门户使用应用设置(这些以环境变量的形式实现)。
我可以通过添加名称为 Serilog:MinimumLevel
和应用程序名称 Serilog:Properties:Application
.
的环境变量轻松设置 MinimumLevel
用数组指定设置的格式是什么?
查看调试器中的配置后,我找到了答案。
Serilog__WriteTo__0__Args__path
(所有平台)
Serilog:WriteTo:0:Args:path
(Windows)
Serilog--WriteTo--0--Args--path
(来自 Azure Key Vault)
Note: The Configuration in ASP.NET Core documentation now covers this.
所以我需要像使用名称一样使用数组索引(从零开始)。
这里是调试器的屏幕截图(感谢 Victor Hurdugaci in the comments), the unit tests 是查找示例的好地方。
在 ASP.NET 核心应用程序中,我有一个 appsettings.json
配置文件,它使用 JSON 数组来配置一组设置。
如何使用环境变量覆盖数组对象之一的设置?
背景
我正在使用 Serilog in an ASP.NET Core application and using the Serilog.Settings.Configuration,以允许使用 appsettings.json
进行配置。
配置是这样的:
{
"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"
}
}
}
部署后,我想覆盖一些设置,例如MinimumLevel 和日志文件的路径。我的首选是在我部署到 Azure 应用服务时通过环境变量来执行此操作,因此我将通过 Azure 管理门户使用应用设置(这些以环境变量的形式实现)。
我可以通过添加名称为 Serilog:MinimumLevel
和应用程序名称 Serilog:Properties:Application
.
用数组指定设置的格式是什么?
查看调试器中的配置后,我找到了答案。
Serilog__WriteTo__0__Args__path
(所有平台)Serilog:WriteTo:0:Args:path
(Windows)Serilog--WriteTo--0--Args--path
(来自 Azure Key Vault)
Note: The Configuration in ASP.NET Core documentation now covers this.
所以我需要像使用名称一样使用数组索引(从零开始)。
这里是调试器的屏幕截图(感谢 Victor Hurdugaci in the comments), the unit tests 是查找示例的好地方。