Как использовать параметры и настройки в azuredeploy - PullRequest
0 голосов
/ 23 января 2020

В соответствии с документацией Работа с опциями и настройками с DI в Azure Function v3 и dotnet core 3.1 работают отлично.

Но я нахожусь в поиске заданных параметров в опции формата: настройка i есть в моих local.settgins. json в azuredeploy. json

При тестировании для развертывания с проектом ARM в Visual Studio у меня возникает эта ошибка. Я еще не пробовал, но мне нужно установить параметр для разных сред в Azure DevOps переменной конвейера.

Большое спасибо за помощь.

Ошибка

failed with message '{
  "Code": "BadRequest",
  "Message": "AppSetting with name 'option:setting' is not allowed.",
  "Target": null,
  "Details": [
    {
      "Message": "AppSetting with name 'option:setting' is not allowed."
    },
    {
      "Code": "BadRequest"
    },
    {
      "ErrorEntity": {
        "ExtendedCode": "04072",
        "MessageTemplate": "AppSetting with name '{0}' is not allowed.",
        "Parameters": [
          "option:setting"
        ],
        "Code": "BadRequest",
        "Message": "AppSetting with name 'option:setting' is not allowed."
      }
    }
  ],
  "Innererror": null
}'

local.settings. json

{
  "IsEncrypted": false,
  "Values": {
    "option:setting": "value"
  }
}

Startup.cs

[assembly: FunctionsStartup(typeof(MyProject.Startup))]
namespace MyProject
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddOptions<MyOption>()
                .Configure<IConfiguration>((settings, configuration) => configuration.GetSection("option").Bind(settings));
        }
    }
}

azuredeploy.parameters. json

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    ...
    "option": {
      "value": {
        "setting": "value"
      }
    }
  }
}

azuredeploy. json

"resources": [
{
  "apiVersion": "2017-05-10",
  "name": "functionApp",
  "type": "Microsoft.Resources/deployments",
  "properties": {
    "parameters": {
      ...
      "additionalAppSettings": {
        "value": {
          "MSDEPLOY_RENAME_LOCKED_FILES": "1",
          "option:setting": "[parameters('option').setting]"
        }
      }
    },
    "debugSetting": {
      "detailLevel": "requestContent,responseContent"
    }
  }
},

1 Ответ

0 голосов
/ 23 января 2020

Нашел в документации Настройте приложение службы приложений на портале Azure

Просто отредактируйте свои local.settings. json и замените char: на __ (* 1005). * есть 2 символа ).

Метод GetSection отлично работает с ним.

А теперь сделайте то же самое с azuredeploy. json.

Вуаля, развертывание отлично работает и Cerise sur le gateau, оно также работает на Linux.

local.settings. json

{
  "IsEncrypted": false,
  "Values": {
    "option__setting": "value"
  }
}

Azuredeploy. json

"resources": [
{
  "apiVersion": "2017-05-10",
  "name": "functionApp",
  "type": "Microsoft.Resources/deployments",
  "properties": {
    "parameters": {
      ...
      "additionalAppSettings": {
        "value": {
          "MSDEPLOY_RENAME_LOCKED_FILES": "1",
          "option__setting": "[parameters('option').setting]"
        }
      }
    },
    "debugSetting": {
      "detailLevel": "requestContent,responseContent"
    }
  }
},
...