问题描述
在我的生命中,我似乎无法获得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)]"
]