我正在创建一个部署 Web 应用程序(一个 Mvc Api)和一个逻辑应用程序的 ARM 模板。
我试图在逻辑应用程序中定义一个 HTTP 操作,以便它动态连接 Api 的基本 Uri 以及使用splitOn
and的当前项目的属性@triggerBody()
。基本 Uri 本身是从 ARM 模板中的一组参数连接到一个变量中的variables('hockeyAppAPISettings').Uri
。
这是动作定义的相关片段:
"actionName": {
"conditions": [ ],
"inputs": {
"authentication": {
"audience": "[variables('apiSettings').Authentication.Audience]",
"clientId": "[variables('apiSettings').Authentication.ClientId]",
"secret": "[variables('apiSettings').Authentication.Secret]",
"tenant": "[variables('apiSettings').Authentication.Tenant]",
"type": "ActiveDirectoryOAuth"
},
"method": "patch",
"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody()['Id']}/ScanningInProgress')]"
//"uri": "[concat(variables('apiSettings').Uri, '//@{triggerBody()[/'Id/']}//ScanningInProgress')]"
//"uri": "[concat(variables('apiSettings').Uri, '//@@{triggerBody()[/'Id/']}//ScanningInProgress')]"
},
"type": "Http"
},
该"uri"
部分是我正在努力解决的问题。在整个过程中,我以不同的模式散布了各种转义字符(\
和@
)。
我要么无法使部署成功,但出现以下部署错误:
无法解析模板语言表达式 'concat(variables('apiSettings').Uri, '//@{triggerBody()[/'Id/']}//ScanningInProgress')':预期的令牌 'RightParenthesis' 和实际的 'Identifier '。有关使用详情,请参阅 http://aka.ms/arm-template-expressions ..'。
或者,如果我让部署工作,然后在部署后查看门户中的代码,则字符串连接似乎无法正常工作。该变量不会转换为其值。
我已经验证,如果我直接(通过门户 HTML 编辑器)使用此编辑 Uri:"uri" : "https://edited.azurewebsites.net/api/Packages/@{triggerBody()['Id']}/ScanningInProgress"
逻辑应用程序将为来自 HTTP 触发器的每个项目进行补丁调用。
我究竟做错了什么?