You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Logic App(标准版)如何捕获HTTP步骤取消事件?

捕获Azure Logic App中步骤的Canceled事件

针对你遇到的问题,核心原因是Canceled状态未被纳入工作流步骤的触发条件,且Canceled发生时HTTP步骤的状态码变量可能未被正确赋值,导致现有错误处理逻辑不生效。以下是具体解决办法:

1. 扩展RunAfter触发条件

现有条件步骤的runAfter仅包含SUCCEEDED/TIMEDOUT/SKIPPED/FAILED,但Canceled是独立的步骤状态,必须显式添加到runAfter列表中,确保Canceled发生时条件步骤能被触发:

修改条件步骤的runAfter配置:

"runAfter": {
  "Set_variable_MasStatusCode": [
    "SUCCEEDED",
    "TIMEDOUT",
    "SKIPPED",
    "FAILED",
    "CANCELED"
  ]
}

2. 调整条件表达式,覆盖Canceled场景

Canceled发生时,MasStatusCode变量可能未被正确设置(比如HTTP步骤直接被终止,未返回状态码),因此需要在条件中额外判断HTTP步骤的状态是否为Canceled。修改条件表达式,将“状态码不等于200”或“HTTP步骤状态为Canceled”作为错误处理的触发条件:

"expression": {
  "or": [
    {
      "not": {
        "equals": [
          "@variables('MasStatusCode')",
          "200"
        ]
      }
    },
    {
      "equals": [
        "@result('HTTP_Call_to_MAS')[0]['status']",
        "CANCELED"
      ]
    }
  ]
}

注:result()函数用于获取指定步骤的运行状态,[0]是因为Standard模式下步骤默认是单实例运行,取第一个结果即可。

3. 优化变量赋值逻辑(可选)

如果Set_variable_MasStatusCode步骤在Canceled场景下未执行,可以在HTTP步骤后直接处理Canceled状态:

  • 在HTTP步骤的后续动作中,将CANCELED加入runAfter列表,直接触发错误处理分支,无需依赖变量判断。

4. 排查工作流运行记录(针对日志问题)

若无法在工作流运行记录中看到Canceled事件,检查Standard Logic App的日志配置:

  • 确保已启用工作流运行日志,并配置Log Analytics或存储账户作为日志目标。
  • 在Log Analytics中使用Kusto查询筛选Canceled状态的运行记录:
    AzureDiagnostics
    | where ResourceType == "LOGICAPPS"
    | where OperationName == "WorkflowRunCompleted"
    | where status_s == "Canceled"
    

修改后的完整条件步骤示例

{
  "type": "If",
  "expression": {
    "or": [
      {
        "not": {
          "equals": [
            "@variables('MasStatusCode')",
            "200"
          ]
        }
      },
      {
        "equals": [
          "@result('HTTP_Call_to_MAS')[0]['status']",
          "CANCELED"
        ]
      }
    ]
  },
  "actions": {},
  "else": {
    "actions": {
      "Upload_blob_to_error_storage": {
        "type": "ServiceProvider",
        "inputs": {
          "parameters": {
            "containerName": "error",
            "blobName": "@concat('error/',variables('BlobName'))",
            "content": "@body('Read_blob_content')?['content']"
          },
          "serviceProviderConfiguration": {
            "connectionName": "AzureBlob-3",
            "operationId": "uploadBlob",
            "serviceProviderId": "/serviceProviders/AzureBlob"
          }
        }
      },
      "MAS_Log_to_Error": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "referenceName": "azureloganalyticsdatacollector"
            }
          },
          "method": "post",
          "body": "{\n\t\"fileName\": \"@{variables('TargetFileName')}\",\n\t\"direction\": \"FromKi\",\n\t\"Error\": \"MAS Upload: @{if(equals(result('HTTP_Call_to_MAS')[0]['status'], 'CANCELED'), 'Canceled', outputs('HTTP_Call_to_MAS')?['statusCode'])}\",\n \t\"Message\": \"File moved to error container\"\n}",
          "headers": {
            "Log-Type": "KiError"
          },
          "path": "/api/logs"
        },
        "runAfter": {
          "Upload_blob_to_error_storage": [
            "SUCCEEDED"
          ]
        }
      }
    }
  },
  "runAfter": {
    "Set_variable_MasStatusCode": [
      "SUCCEEDED",
      "TIMEDOUT",
      "SKIPPED",
      "FAILED",
      "CANCELED"
    ]
  }
}

内容的提问来源于stack exchange,提问作者LStrike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:28:14