取决于登台广告位,资源ID中有多个逗号

问题描述

在我的生命中,我似乎无法获得dependsOn部分来正确构造对登台插槽的依赖关系。我收到以下错误

Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace. Current function arguments 'Microsoft.Web/sites/slots,web01/staging'

我尝试了多种方法,但最终都遇到了相同的错误,但在我尝试过的选项之一以下:

"dependsOn": [
    "[concat(resourceId('Microsoft.Web/sites/slots',parameters('webappName')),'/staging')]"
],

"dependsOn": [
    "[resourceId('Microsoft.Web/sites/slots',concat(parameters('webappName')),'/staging'))]"
],

有人知道我可以解决这个问题吗?

解决方法

不必使用concat函数,resourceId本身接受几个参数来形成名称:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#resourceid

这里有一个示例,说明我们如何在工作中使用它来为广告位创建配置。

"apiVersion": "2015-08-01","condition": "[equals(parameters('CreateSlot'),'true')]","name": "appsettings","type": "config","dependsOn": [
     "[resourceId('Microsoft.Web/sites',variables('functionAppName'))]","[resourceId('Microsoft.Web/sites/slots',variables('functionAppName'),parameters('SlotName'))]"
],"properties": {                                
      "AzureWebJobsDashboard": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts',variables('storageAccountName')),'2015-05-01-preview').key1)]"
]