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

f0ofjuux  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(141)

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

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

在我的开发计算机(即localhost)上运行代码时会使用这些值。如果我想覆盖Azure的应用程序设置中的“SomeSettings”以用于wep应用程序,我将如何指定“PropB”数组?
我想在其中存储信息的SomeSettings.cs类如下所示:

public class SomeSettings
{
    public string PropA { get; set; }
    public List<string> PropB { get; set; }
}

问题是“PropB”--如何在Azure中将数组或List指定为字符串--这甚至是可能的吗?
在我的Startup类的构造函数中,我有:

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

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

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

wsxa1bj11#

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

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

如果你没有在Windows上运行,请将冒号:替换为双下划线__,以使你的应用程序看到设置。因此,你应该使用SomeSettings__PropA而不是SomeSettings:PropA

rjee0c15

rjee0c152#

如果数组值是一个对象(请参阅下面的WriteTo值),则可以复制整个WriteTo值,如果需要,可以更新这些值,并为其创建应用程序设置,如下所示:

"Serilog": {
    "WriteTo": [
      {
        "Name": "ApplicationInsights",
        "Args": {
          "restrictedToMinimumLevel": "Information",
          "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
          "instrumentationKey": "YOUR-KEY"
        }
      },
      {
        "Name": "UmbracoFile",
        "Args": {
          "RestrictedToMinimumLevel": "Error"
        }
      },
      {
        "Name": "Async",
        "Args": {
          "configure": [
            {
              "Name": "Console"
            }
          ]
        }
      }

    ]
  }

dbf7pr2w

dbf7pr2w3#

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

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

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

相关问题