Azure Logic App HTTP请求500

时间:2016-09-14 07:40:57

标签: azure azure-logic-apps

我是Azure Logic Apps的新手,所以这个示例可能看起来不那么有用,但它只是为了学习一些基本的Azure Logic。

我有一个简单的HTTP侦听器(收到H​​TTP请求时) 它应该向某个服务发送另一个HTTP GET请求并向第一个调用者发送响应。 它看起来像这样: http://imgur.com/a/9fpfu

现在一切正常,直到我发送错误的数据或逻辑应用程序从HTTP请求中获得500 HTTP错误。

比Logic应用程序挂起大约1分钟的HTTP请求并失败。 之后的响应永远不会发送。

如何将Logic应用程序返回的响应转发给请求逻辑应用程序的请求者?

3 个答案:

答案 0 :(得分:0)

如你所知500是一个未知的错误,因此logicapp引擎停止处理任何在重试后仍然保持500投掷的动作。对于这种特定情况,您需要设置logicapp诊断规则"操作失败" /"运行失败"。在规则中,您可以配置发送电子邮件和/配置webhook以响应事件

答案 1 :(得分:0)

逻辑应用程序默认会重试任何失败请求4次,因此当http服务返回错误5xx时,您会看到运行时间增加。您可以使用自定义重试策略配置此行为。查看更多https://azure.microsoft.com/en-us/updates/customizable-retry-policies-in-logic-apps/

默认情况下,Logic App步骤依赖于任何相关操作的成功。这会导致在http操作失败时跳过响应操作。

您有几种方法可以解决这个问题:

  1. 在代码视图中,您可以更新runAfter属性,以便无论http操作是否成功,操作都会运行

    "runAfter": { "Condition": [ "Succeeded", "Failed" ] }
    
  2. 在http操作的http状态代码上向Logic Apps添加条件,然后针对每个案例执行专门的Response操作

答案 2 :(得分:0)

您可以将Http操作的重试策略和超时设置更新为

enter image description here