在 Azure Web 应用设置中使用数组

Posted

技术标签:

【中文标题】在 Azure Web 应用设置中使用数组【英文标题】:Using an array in Azure web app settings 【发布时间】:2016-03-07 21:36:00 【问题描述】:

在我的 ASP.NET 5 (RC1) 代码中,我有一个 appsetting.json,看起来像这样:


    "SomeSettings": 
        "PropA": "ValueA",
        "PropB": [
            "ValueB1",
            "ValueB2"
        ]
    

在我的开发机器(即本地主机)上运行代码时会使用这些值。如果我想为 wep 应用覆盖 Azure 应用程序设置中的“SomeSettings”,我将如何指定“PropB”数组?

我想在其中存储信息的 SomeSettings.cs 类如下所示:

public class SomeSettings

    public string PropA  get; set; 
    public List<string> PropB  get; set; 

问题是“PropB”——如何在 Azure 中将数组或列表指定为字符串——这甚至可能吗?

在我的 Startup 类的构造函数中,我有:

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddEnvironmentVariables();

在我的 Startup 类的 Configure 方法中,我有:

var someSettings = configuration.GetSection("SomeSettings").Get<SomeSettings>();

【问题讨论】:

【参考方案1】:

像这样在“应用程序设置”下添加设置就可以了... 注意下面的“:0”和“:1”

格式:键->值

SomeSettings:PropA -> AzureValueA
SomeSettings:PropB:0 -> AzureValueB1
SomeSettings:PropB:1 -> AzureValueB2

如果您不是在 Windows 上运行,请将冒号 : 替换为双下划线 __ 以让您的应用查看设置。所以而不是例如SomeSettings:PropA,你会使用SomeSettings__PropA

【讨论】:

到今天为止,它运行良好。只是想确认方法还在这里。我们使用 VSTS 通过 PS 脚本部署 WebApp 参数,现在我们可以推送数组了。谢谢。 你知道如何将SomeSettings__PropB 表示为一个空数组吗? 这也适用于 Azure Functions 的 local.settings.json。 如果您使用 Azure Function,请不要忘记在设置名称中添加 Values 前缀。即Values:SomeSettings:PropB:0【参考方案2】:

简单的方法是将JSON作为字符串存储在AppSetting中,并自行反序列化

var serializer = new javascriptSerializer();
var settings = serializer.Deserialize<SomeSettings>(configuration.GetSection("SomeSettings"));

我相信您将不得不创建自己的客户配置。 https://msdn.microsoft.com/en-us/library/2tw134k3.aspx

【讨论】:

这个问题是关于“Azure web app settings”的,你的答案是无关紧要的。

以上是关于在 Azure Web 应用设置中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

Azure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置

覆盖 azure app 服务应用程序设置中的数组

如何在发布前使用 azure 管道在 Web 应用程序中复制反应构建文件?

Azure 中插槽上的应用程序设置

arraffinity cookie 是不是始终设置在 azure Web 应用程序上?

在 Azure 中为 ASP.NET Core Web 应用设置 SQL 连接字符串