Ошибка передачи типа массива в качестве параметра в настройку приложения для слота AppService - PullRequest
0 голосов
/ 20 октября 2019

Развертывание AppService с параметром типа «массив», подставляемым как настройка приложения «Слот для веб-сайта», завершается ошибкой со следующей ошибкой.

2019-10-20T10:25:46.0572018Z ##[error]BadRequest: {
  "Code": "BadRequest",
  "Message": "HTTP request body must not be empty.",
  "Target": null,
  "Details": [
    {
      "Message": "HTTP request body must not be empty."
    },
    {
      "Code": "BadRequest"
    },
    {
      "ErrorEntity": {
        "ExtendedCode": "51016",
        "MessageTemplate": "HTTP request body must not be empty.",
        "Parameters": [],
        "Code": "BadRequest",
        "Message": "HTTP request body must not be empty."
      }
    }
  ],
  "Innererror": null
}

Используемый шаблон приведен ниже. Когда параметр Email__ToEmailAddress изменяется на строковый тип, развертывание завершается успешно, но как тип массива происходит сбой. Передача пустого массива или массива с более чем одним значением не имеет значения.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": { 
    "aseName": {
      "type": "string"
    },
    "hostingPlanName": {
      "type": "string"
    },
    "webAppName": {
      "type": "string"
    },
    "appInsightsLocation": {
      "type": "string"
    },
    "slotName": {
      "type": "string"
    },
    "gatewayIPAddressRestriction": {
      "type": "string"
    },
    "containerRegistryName": {
      "type": "string"
    },
    "containerImageName": {
      "type": "string"
    },
    "containerRegistryResourceGroup": {
      "type": "string"
    },
    "vNetName": {
      "defaultValue": "",
      "type": "string"
    },
    "vNetResourceGroupName": {
      "defaultValue": "",
      "type": "string"
    },
    "Email__ToEmailAddress": {
      "defaultValue": [
        "email@domain.com"
      ],
      "type": "array"
    },
    "Email__FromEmailAddress": {
      "defaultValue": "email@domain.com",
      "type": "string"
    },
    "Email__SmtpServerPort": {
      "defaultValue": 2525,
      "type": "int"
    },
    "Email__IsAuthenticationRequired": {
      "defaultValue": false,
      "type": "bool"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2018-02-01",
      "name": "[tolower(parameters('webAppName'))]",
      "location": "[resourceGroup().location]",
      "tags": {
        "[concat('hidden-related:', '/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', tolower(parameters('hostingPlanName')))]": "empty"
      },
      "resources": [
        {
          "apiVersion": "2016-08-01",
          "type": "config",
          "name": "web",
          "dependsOn": [
            "[tolower(parameters('webAppName'))]"
          ]
        }
      ],
      "properties": {
        "name": "[tolower(parameters('webAppName'))]",
        "serverFarmId": "[concat('/subscriptions/', subscription().subscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', tolower(parameters('hostingPlanName')))]",
        "hostingEnvironment": "[parameters('aseName')]"
      },
      "dependsOn": [
        "[resourceId('microsoft.insights/components/', tolower(parameters('webAppName')))]"
      ]
    },
    {
      "apiVersion": "2016-08-01",
      "type": "Microsoft.Web/sites/slots",
      "name": "[concat(tolower(parameters('webAppName')), '/', tolower(parameters('slotName')))]",
      "location": "[resourceGroup().location]",
      "comments": "This specifies the app service slot deployed to.",
      "tags": {
        "displayName": "Slot"
      },
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
        "siteConfig": {
          "appSettings": [
            {
              "name": "Email__ToEmailAddress",
              "value": "[parameters('Email__ToEmailAddress')]"
            },
            {
              "name": "Email__FromEmailAddress",
              "value": "[parameters('Email__FromEmailAddress')]"
            },
            {
              "name": "Email__SmtpServerPort",
              "value": "[parameters('Email__SmtpServerPort')]"
            },
            {
              "name": "Email__IsAuthenticationRequired",
              "value": "[parameters('Email__IsAuthenticationRequired')]"
            }
          ],
          "linuxFxVersion": "[concat('DOCKER|', reference(resourceId(parameters('containerRegistryResourceGroup'), 'Microsoft.ContainerRegistry/registries', parameters('containerRegistryName')), '2017-10-01').loginServer, '/', parameters('containerImageName'))]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', tolower(parameters('webAppName')))]"
      ]
    },
    {
      "type": "Microsoft.Insights/components",
      "name": "[tolower(parameters('webAppName'))]",
      "apiVersion": "2014-04-01",
      "location": "[parameters('appInsightsLocation')]",
      "tags": {
        "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', tolower(parameters('webAppName')))]": "Resource"
      },
      "properties": {
        "applicationId": "[tolower(parameters('webAppName'))]",
        "Request_Source": "AzureTfsExtensionAzureProject"
      }
    }
  ]
}

Оцените все ответы.

1 Ответ

0 голосов
/ 21 октября 2019

Это может быть связано с тем, как массив анализируется функцией параметров.

Попробуйте:

[array(parameters('Email__ToEmailAddress'))]

Или:

[[parameters('Email__ToEmailAddress')]]

Надеюсь, это поможет.

...