Azure Logic App突然返回202而非200,触发条件问题求助
Azure Logic App HTTP触发器返回202而非200,触发条件导致无法正常执行
背景信息
- 触发器:HTTP request
- 触发条件:检查特定请求头是否存在
- 动作:包含Azure Storage、Azure SQL、Outlook、O365Users等多个操作
- 响应:HTTP response
已尝试操作
- 移除新增的SQL Server动作:无变化
- 移除最新添加的触发条件:无变化
- 重新生成带SAS令牌的URL:无变化
观察结果
- 问题出现后无
Run History记录 Trigger History中显示状态码202的触发记录
更新说明
问题根源确认是触发条件:移除所有触发条件后,请求可正常触发应用,需了解正确的请求头检查方式,此前使用的表达式为@empty(triggerOutputs()['headers']['<header name>'])
解决方案
问题原因
此前使用的@empty(triggerOutputs()['headers']['<header name>'])存在逻辑问题:当指定请求头不存在时,triggerOutputs()['headers']['<header name>']会返回null,empty(null)的结果为true,导致触发条件判断为不满足。此时HTTP触发器会直接返回202(请求已接受但不执行后续流程),因此不会生成Run History记录。
正确的请求头检查表达式
以下两种表达式均可正确检查请求头是否存在:
- 检查请求头键是否存在于headers集合中:
@contains(triggerOutputs()['headers'], '<header name>') - 检查请求头值不为null:
@not(equals(triggerOutputs()['headers']['<header name>'], null))
注意事项
触发条件的逻辑规则为:当表达式返回true时,才会触发后续流程执行;返回false时,触发器直接返回202,终止流程。需根据实际需求调整表达式的逻辑(例如如果需要请求头不存在时触发,可在表达式前添加@not())。
内容的提问来源于stack exchange,提问作者ericOnline
相关产品推荐
相关产品推荐

