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')]"