2016-09-14 55 views
0

我是Azure逻辑应用程序的新手,所以这个示例可能看起来没什么用处,但它只是用来学习一些基本的Azure逻辑。Azure Logic App HTTP请求500

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

一切是伟大的工作,直到我发送错误的数据或以某种方式在逻辑应用程序从HTTP请求得到一个500 HTTP错误。

比逻辑应用挂在HTTP请求为1分钟左右以及将失败。 之后的回应永远不会发送。

我怎么可以转发逻辑应用越来越退给谁要求的逻辑应用程序请求方的反应如何?

回答

0

正如你所知道500是什么未知的错误,因此logicapp发动机停止处理该保持重试后仍抛出500的任何行动。对于这种特定情况,您需要设置logicapp诊断规则“操作失败”/“运行失败”。在规则,当HTTP服务返回错误的5xx您可以配置发送电子邮件和/配置网络挂接向事件

+0

的Http行动的超时设置,当我添加另一种反应没有什么变化,也有我的代码工作为4XX错误,但不是为5XX ... – onefox

+0

作为你知道500是一个未知的错误,因此logicapp引擎会停止处理任何在重试后仍然会抛出500的操作。对于这种特定情况,您需要设置logicapp诊断规则“操作失败”/“运行失败”。在规则中,您可以配置发送电子邮件和/配置webhook以对事件做出反应。 – TusharJ

0

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

默认情况下,逻辑应用步骤有任何相关动作的成功依赖。这会导致您的响应操作在http操作失败时被跳过。

你有几个选项来解决这个问题:

  1. 在代码视图,您可以更新runAfter属性,这样的动作无论HTTP动作是否成功运行

    "runAfter": { "Condition": [ "Succeeded", "Failed" ] } 
    
  2. 为http操作的http状态代码添加一个条件到您的Logic应用程序,然后针对每种情况设置专用的Response操作

+0

你的意思是[link](https://msdn.microsoft.com/library/azure/mt643939.aspx)。 无法在类型的对象FlowTemplateAction“发现成员“retryPolicy”: 尝试添加retryPolicy当我收到以下错误。路径'properties.definition.actions.HTTP。retryPolicy', 这是我的代码(条件是已经成功和失败): http://pastebin.com/igfprKFT 也为4xx错误它工作正常,只为5xx需要1分钟超时。 http://imgur.com/a/0nBPK 超时后,响应不会被触发 – onefox

+0

看起来您正在指定retryPolicy直接执行操作。它需要在输入属性下。关于故障,Logic Apps只能重试间歇性故障(因此5xx状态代码),4xx状态代码被视为确定性故障,因此不会重试 –