Azure 逻辑应用的字符串连接问题
String concatenation issue with Azure Logic Apps
我正在创建一个部署 Web 应用程序(Mvc Api)和逻辑应用程序的 ARM 模板。
我正在尝试在逻辑应用程序中定义一个 HTTP 操作,以便它使用 [=11] 动态连接 Api 的基本 URI 以及当前项目的 属性 =] 和 @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"
部分是我正在努力解决的问题。在整个过程中,我以不同的模式散布了各种转义字符(\
和 @
)。
我无法使部署成功 w/deployment 错误如:
Unable to parse template language expression
'concat(variables('apiSettings').Uri,
'//@{triggerBody()[/'Id/']}//ScanningInProgress')': expected token
'RightParenthesis' and actual 'Identifier'. Please see
http://aka.ms/arm-template-expressions for usage details..'.
或者,如果我让部署工作,然后在部署后查看门户中的代码,字符串连接似乎无法正常工作。变量未转换为其值。
我已经验证,如果我直接编辑 Uri(通过门户 HTML 编辑器)使用这个:"uri" : "https://edited.azurewebsites.net/api/Packages/@{triggerBody()['Id']}/ScanningInProgress"
Logic App 将对来自 HTTP 的每个项目进行补丁调用触发器。
我做错了什么?
您需要转义内部单引号,即尝试
"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody()[''Id'']}/ScanningInProgress')]"
或者,您可以使用点符号来引用 属性,即
"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody().Id}/ScanningInProgress')]"
我正在创建一个部署 Web 应用程序(Mvc Api)和逻辑应用程序的 ARM 模板。
我正在尝试在逻辑应用程序中定义一个 HTTP 操作,以便它使用 [=11] 动态连接 Api 的基本 URI 以及当前项目的 属性 =] 和 @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"
部分是我正在努力解决的问题。在整个过程中,我以不同的模式散布了各种转义字符(\
和 @
)。
我无法使部署成功 w/deployment 错误如:
Unable to parse template language expression 'concat(variables('apiSettings').Uri, '//@{triggerBody()[/'Id/']}//ScanningInProgress')': expected token 'RightParenthesis' and actual 'Identifier'. Please see http://aka.ms/arm-template-expressions for usage details..'.
或者,如果我让部署工作,然后在部署后查看门户中的代码,字符串连接似乎无法正常工作。变量未转换为其值。
我已经验证,如果我直接编辑 Uri(通过门户 HTML 编辑器)使用这个:"uri" : "https://edited.azurewebsites.net/api/Packages/@{triggerBody()['Id']}/ScanningInProgress"
Logic App 将对来自 HTTP 的每个项目进行补丁调用触发器。
我做错了什么?
您需要转义内部单引号,即尝试
"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody()[''Id'']}/ScanningInProgress')]"
或者,您可以使用点符号来引用 属性,即
"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody().Id}/ScanningInProgress')]"