当前位置: 首页 > 知识库问答 >
问题:

覆盖azure app service应用程序设置中的阵列

呼延升
2023-03-14

在我的。NET Core应用程序中,我向appsettings.json添加了一个数组,如下所示:

{
  "SettingsA": {
    "PropA": [
        "ChildObjectA": {
          ...
        },
        "ChildObjectB": {
          ...
        }
    ]
  }
}

如果我想从azure应用程序服务中的应用程序设置中覆盖该值,使其具有空数组:

{
  "SettingsA": {
    "PropA": []
  }
}

有办法做到这一点吗?

我试着把

SettingsA:PropsA  ->  []

应用程序设置中,但它似乎没有覆盖appsettings的值。json

共有3个答案

苏宏峻
2023-03-14

您可以使用add环境变量属性来实现将Azure上的应用设置重写为本地设置。

注意:这里的值为空。

要覆盖应用程序设置部分中的嵌套键,我们可以使用完整路径SettingsA:PropA作为名称或使用双下划线SettingsA__-PropA定义变量。你可以参考这篇文章。

在本地,您可以配置如下:在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"));

        }

在应用程序设置中。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读取appsetting的详细信息。net core,请关注这个案例。

谷梁淇
2023-03-14

下面是我们在现实生活中是如何做到这一点的。

我们需要在应用程序设置中配置一组受支持的语言。下面是它在应用程序设置中的外观。json在我们的。NET核心项目:

{
    ...

    "SupportedLanguages": [
        {
            "Code": "en-AU",
            "Name": "English (Australia)"
        },
        {
            "Code": "en-GB",
            "Name": "English (United Kingdom)"
        },
        {
            "Code": "en-US",
            "Name": "English (United States)"
        }
    ]
}

这就是它在我们的Azure应用程序服务中的表现:

这有点复杂,尤其是如果你有一个更大或更复杂的层次结构,但我认为现在没有别的方法。

应和光
2023-03-14

这里https://www.ryansouthgate.com/2016/03/23/iconfiguration-in-netcore/答案是,您可以覆盖数组中的元素或添加其他元素,但他说您不能覆盖整个数组,这似乎很奇怪。

重写语法使用从零开始的访问,如设置A: PropA: 0:某物,我已经在应用服务上尝试过了,可以确认它有效。

 类似资料:
  • 我想开发一个API,使非程序员能够设置电子邮件属性,例如端口或主机。我发现我可以使用Spring Boot注释@ConfigurationProperties在类中加载属性。 我可以使用getPort检索属性,并使用setPort进行设置。 但是,使用此方法可以计算应用程序中的实际值。使用setPort或setHost时,属性文件不会更改。因此,当我重新启动应用程序时,更改会丢失。是否有办法实际更

  • 我已经开发了azure定时器触发函数。我从功能应用程序的应用程序设置中获取计时器时间表,如下所示。 函数. json 这对于给定的静态时间表来说工作正常。但是当用户需要更改时间表时,该时间表应该能够根据另一个Web应用程序的用户要求进行更改。 我正在努力从外部应用程序动态地更改计划参数。我尝试的是部署一个ARM模板,从下面的ARM模板注入新的时间表值。 但是,这不是重写现有的appSettings

  • 我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app

  • 我看了一下这个老问题中提到的工具,但是那些做javascript的工具似乎没有提到任何关于覆盖率分析的内容。尽管radamsa提到了可选地将其与覆盖分析配对,但我还没有找到任何关于如何实际做到这一点的文档。 一个如何用覆盖指导模糊测试Java脚本(在浏览器中)应用程序?

  • 设置应用程序 Nest is built with features from both ES6 and ES7 (decorators, async / await). It means, that the easiest way to start adventure with it is to use Babel or TypeScript. In this tutorial I will u

  • 有一款Spring Boot 2 app就是这样的结构: 此外,模块1依赖于模块2,在pom.xml部分中指定。 谢谢你!