2016-09-14 111 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狀態代碼被視爲確定性故障,因此不會重試 –