逻辑应用程序 - HTTP操作 - 循环直到200

时间:2017-06-09 09:07:23

标签: azure azure-logic-apps

我有一个带有http动作的逻辑应用程序。 由于回复策略最多允许4次重试,因此我将活动放在do-until循环中(使用最大计数和超时),使用http状态代码作为转义变量(直到它为200)。

此图片应该更清晰 enter image description here

在运行时我收到此错误

  

[编辑]的 InvalidTemplate。无法处理动作'HTTPAction'的模板语言表达式 [编辑]:无法处理动作的模板语言表达式'HttpAction'[...]模板语言表达式'equals(outputs('HttpAction')['statusCode '],200)'无法评估,因为无法选择属性'statusCode'。

任何提示?

谢谢,亚历山德罗

[编辑] http请求正常工作(尝试使用fiddler),在工作流程中我认为它由于模板错误而无法执行(为什么它在运行时失败而不是在编辑模式?)[编辑]

4 个答案:

答案 0 :(得分:0)

回复可读代码。 我只是做了一个快速的POC来模拟你的场景,但我无法重现你的问题。

我的待办事项代码:

"Until": {
            "actions": {
                "HttpGetMyValues": {
                    "inputs": {
                        "headers": {
                            "Ocp-Apim-Subscription-Key": "@parameters('OcpApimSubscriptionKey')"
                        },
                        "method": "GET",
                        "uri": "https://myendpointuri"
                    },
                    "runAfter": {},
                    "type": "Http"
                }
            },
            "expression": "@equals(outputs('HttpGetMyValues')['statusCode'], 200)",
            "limit": {
                "count": 1,
                "timeout": "PT1M"
            },
            "runAfter": {},
            "type": "Until"
        }

我可以毫无问题地保存并运行Logic App。

答案 1 :(得分:0)

重试策略是可配置的,目前只能通过代码视图获得,但我们计划很快在设计器中启用它。 Here's文档。

"retryPolicy" : {
      "type": "<type-of-retry-policy>",
      "interval": <retry-interval>,
      "count": <number-of-retry-attempts>
    }

答案 2 :(得分:0)

我知道这很晚了,但是错误是由于循环本身中包含“ do-until”循环结束的条件所致。您需要使用循环外的值作为参考。我建议:

  1. 在“ do-until”操作之前创建一个变量,默认值为“ 400”
  2. 使用变量作为值,“状态码”值必须等于
  3. 在每次循环迭代结束时更新变量(在Logic Apps中为集合变量),以等于“状态代码”。

答案 3 :(得分:0)

在直到控件中:

  1. 点击编辑高级模式
  2. 将文本替换为 @equals(actions('HTTPAction').status, 'Succeeded')
  3. 代码表示在 HTTPAction 完成时停止执行直到循环