簡體   English   中英

在 Azure Function 應用程序設置中使用數組

[英]Using Array in Azure Function Application Settings

I'm using appsettings.json for the configuration of my Azure Function (netcoreapp3.1, running on a Windows machine).

appsettings.json文件中有一個帶有設置的數組:

{
    "ArraySettings": [
        {
            "ArraySettingProperty1": "ArraySetting1Value1",
            "ArraySettingProperty2": "ArraySetting1Property2"
        },
        {
            "ArraySettingProperty1": "ArraySetting2Value1",
            "ArraySettingProperty2": "ArraySetting2Property2"
        }
    ],
    "SingleSetting": "SingleValue"
}

如果我在本地運行 Azure Function 它工作正常。 But it seems not to work on Azure although the appsettings.json file was deployt and can be found by the Azure Function.

Startup.cs中:

private IConfiguration InitializeConfiguration(IFunctionsHostBuilder functionsHostBuilder)
        {
            ExecutionContextOptions executionContextOptions = functionsHostBuilder
               .Services
               .BuildServiceProvider()
               .GetService<IOptions<ExecutionContextOptions>>()
               .Value;

            return new ConfigurationBuilder()
                .SetBasePath(executionContextOptions.AppDirectory)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();
        }

這是我已經嘗試過的(沒有成功):

  1. 將設置復制到local.settings.json文件的Values部分

  2. 以以下密鑰格式將設置添加到 Azure 上的應用程序設置(無論是否注釋掉appsettings.json配置):

    2.1 ArraySettings:ArraySettingProperty1:0

    2.2 ArraySettings__ArraySettingsProperty1__0

    2.3 值__ArraySettings__ArraySettingsProperty1__0

為什么陣列設置在本地有效,但在 Azure 上無效? 我怎樣才能讓它們在 Azure 上工作? 謝謝!

請嘗試在您的應用服務的配置設置中進行如下設置:

Key: ArraySettings__0__ArraySettingProperty1

Value: ArraySetting1Value1

Key: ArraySettings__0__ArraySettingProperty2

Value: ArraySetting1Value2

Key: ArraySettings__1__ArraySettingProperty1

Value: ArraySetting1Value1

Key: ArraySettings__1__ArraySettingProperty2

Value: ArraySetting1Value2

Key: SingleSetting

Value: SingleValue

如果您的應用服務部署在 Windows 上,您可以使用:作為分隔符而不是__ 但是__適用於 Windows 和 Linux。

這有效:

public class MyOptions
{
      public List<string> MyArray { get; set; }
}

// local.settings.json:
{
  "IsEncrypted": false,
  "Values": {
    "MyOptions:MyArray:0": "foo",
    "MyOptions:MyArray:1": "bar"
  }
}

// In startup.cs:
builder.Services.Configure<MyOptions>(configuration.GetSection("MyOptions"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM