首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用环境变量覆盖ASP.NET核心配置数组设置

如何使用环境变量覆盖ASP.NET核心配置数组设置
EN

Stack Overflow用户
提问于 2016-06-06 12:20:07
回答 2查看 28.8K关注 0票数 93

TL;DR

在一个ASP.NET核心应用程序中,我有一个appsettings.json配置文件,它使用一个JSON数组来配置一个设置集合。

如何使用环境变量覆盖数组对象的设置?

背景

我在ASP.NET核心应用程序中使用ASP.NET,并使用Serilog.Settings.Configuration,以便使用appsettings.json对其进行配置。

配置如下:

代码语言:javascript
运行
复制
{
  "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 are中,因此我将通过Azure管理门户使用App设置(这些设置作为环境变量实现)。

我可以通过添加一个名为: MinimumLevel和应用程序名称Serilog:Properties:Application的环境变量来轻松地设置Serilog:MinimumLevel

使用数组指定设置的格式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-06 12:20:07

在查看了调试器中的配置之后,我找到了答案。

  • Serilog__WriteTo__0__Args__path (所有平台)
  • Serilog:WriteTo:0:Args:path (视窗)
  • Serilog--WriteTo--0--Args--path (来源于Azure Key Vault)

注意:ASP.NET核中的配置文档现在涵盖了这一点。

因此,我需要使用数组索引(基于零),就好像它是一个名称。

以下是调试器的屏幕截图(感谢注释中的维克托·赫杜加奇 ),单元测试是寻找示例的好地方。

票数 138
EN

Stack Overflow用户

发布于 2022-12-02 19:12:43

我知道这是一条老生常谈,但对于我的问题,我能找到的最相关的一条是:

我的a文件的设置如下:

代码语言:javascript
运行
复制
{
   "Settings": {
      "UserList": [ "devuser1", "devuser2" ]
   }
}

我希望将其放入k8s秘密(因为环境之间的列表会发生变化),因此我将键值对设置为:

Settings__UserList: '[ "devuser1", "devuser2" ]'

但这似乎不起作用。我刚刚意识到我还没有尝试在没有括号的情况下设置它:

Settings__UserList: "devuser1", "devuser2"

如果这不起作用的话,我是否需要像这样设置我的秘密才能真正发挥作用呢?

代码语言:javascript
运行
复制
Settings__UserList__0: "devuser1"
Settings__UserList__1: "devuser2"

我在文档中没有看到涉及这种类型数组值的任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37657320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档