Azure Logic Apps的字符串连接问题

Pau*_*aul 6 azure-logic-apps azure-rm-template

我正在创建一个ARM模板,用于部署Web App(Mvc Api)和Logic App.

我试图定义逻辑应用内的HTTP操作,使得它动态地连接了API的基本URI以及使用当前项的属性splitOn@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"
},
Run Code Online (Sandbox Code Playgroud)

"uri"节是我正在努力的方面.我已经通过这种方式在不同的模式中洒了各种转义字符(\@).

我要么无法使部署成功,而是部署错误,例如:

无法解析模板语言表达式'concat(变量('apiSettings').Uri,'// @ {triggerBody()[/'Id /']} // ScanningInProgress')':期望令牌'RightParenthesis'和实际'标识符".有关使用详情,请参阅 http://aka.ms/arm-template-expressions ..'.

或者,如果我使部署工作,然后在部署后查看门户中的代码,则字符串连接似乎无法正常工作.变量不会转换为其值.

我已经验证过,如果我使用以下方式直接编辑Uri(通过门户网站HTML编辑器):"uri" : "https://edited.azurewebsites.net/api/Packages/@{triggerBody()['Id']}/ScanningInProgress"Logic App将为来自HTTP触发器的每个项目进行补丁调用.

我究竟做错了什么?

小智 11

你需要逃避内部单引号,即尝试

"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody()[''Id'']}/ScanningInProgress')]"
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用点符号来引用属性,即

"uri": "[concat(variables('apiSettings').Uri, '/@{triggerBody().Id}/ScanningInProgress')]"
Run Code Online (Sandbox Code Playgroud)