共用方式為


從 BizTalk Server 連線到 Azure Logic Apps

若要在 BizTalk Server 與 Azure 中的邏輯應用程式工作流程之間交換訊息,您可以使用 BizTalk Server for Azure Logic Apps 中的配接器。 本指南說明如何從邏輯應用程式工作流程接收 BizTalk Server 中的訊息。 工作流程可以將訊息傳送至 BizTalk Server。 接收端會使用 Internet Information Services (IIS) 應用程式來處理與 Azure 服務的通訊。

如果 BizTalk Server 位於內部部署且已加入您的網域,您必須在 BizTalk Server 上安裝內部部署數據閘道,並在 Azure 中建立內部部署數據閘道資源。 不過,如果 BizTalk Server 安裝在 Azure 虛擬機上,您可以選擇是否要將虛擬機公開為 HTTP 端點,其具有您可以呼叫的 URL。

如果您選擇 [HTTP 端點] 選項,則不需要使用閘道。 相反地,您會建立邏輯應用程式工作流程、新增 BizTalkServer 連接器動作,並提供動作連線資訊所需的 HTTP 端點 URL。 不過,如果您選擇內部部署選項,則必須設定並使用數據網關,本指南稍後將說明。

本指南也會示範如何將訊息從 BizTalk Server 傳送至邏輯應用程式工作流程。 換句話說,邏輯應用程式工作流程可以從 BizTalk Server 接收訊息。

本指南說明如何使用 Azure Logic Apps 配接器建立接收位置和傳送埠。 您可以使用此配接器搭配內部部署 BizTalk Server 或執行 BizTalk Server 的 Azure 虛擬機。

先決條件

  • Azure 帳戶和訂用帳戶,讓您可以登入 Azure 入口網站,並建立邏輯應用程式資源和工作流程。 如果您沒有訂用帳戶,註冊免費 Azure 帳戶

  • BizTalk Server 需求,以安裝伺服器的位置為基礎:

    • 具有 BizTalk Server 的內部部署電腦:安裝和設定 Azure Logic Apps內部部署數據閘道。 然後,在 Azure 入口網站中,建立 數據閘道資源,以搭配邏輯應用程式工作流程中的 BizTalk Server 連接器使用。

    • 具有 BizTalk Server 的 Azure 虛擬機:

      • 如果虛擬機未公開為 HTTP 端點,請安裝並設定 Azure Logic Apps內部部署數據閘道。 然後,在 Azure 入口網站中,建立 數據閘道資源,以搭配邏輯應用程式工作流程中的 BizTalk Server 連接器使用。

      • 如果虛擬機公開為 HTTP 端點,您就不需要使用數據閘道安裝,也不需要建立數據閘道資源。

  • 一些熟悉 Azure Logic Apps。 如果您不熟悉邏輯應用程式,請參閱 什麼是 Azure Logic Apps?在多租使用者 Azure Logic Apps中建立取用邏輯應用程式工作流程範例。

  • 或者,假設您的工作流程是以可接收 HTTP 要求的觸發程式開始,例如 要求 觸發程式,您可以傳送觸發邏輯應用程式工作流程的測試訊息。 若要傳送此訊息,請使用可將 HTTP 要求傳送至工作流程中觸發程式所產生的端點 URL 的工具。 下列清單包含範例工具:

    謹慎

    如果您有敏感數據,例如認證、秘密、存取令牌、API 金鑰和其他類似資訊,請務必使用一個工具,以必要的安全性功能保護您的數據、離線或本機運作、不會將數據同步處理至雲端,而且不需要您登入在線帳戶。 如此一來,您就可以降低公開敏感數據給公眾的風險。

安裝 Azure Logic Apps 配接器

BizTalk Server 2020 和更新版本

從 BizTalk Server 2020 開始,Azure Logic Apps 配接器隨附於 BizTalk Server 安裝中。

BizTalk Server 2016

  1. 在您的 BizTalk Server 上,下載並安裝 Azure Logic Apps 配接器:

    1. 移至 Microsoft BizTalk Server Adapter for Logic Apps,然後選取 [下載]

    2. 若要安裝,請開啟 LogicAppAdapter.iso 檔案,然後執行 LogicApp Adapter.msi 檔案。

    3. 接受授權協定,然後選取 [安裝

  2. 安裝完成之後,請重新啟動 BizTalkServerApplication,並 BizTalkServerIsolatedHost 主機實例。

安裝完成之後,您有下列狀態:

  • Azure Logic Apps 配接器會新增至 BizTalk 系統管理。

  • 會建立傳送處理程式,並使用 BizTalkServerApplication 主機實例。

  • 接收處理程式會建立為 Windows Communication Foundation 服務,並使用 BizTalkServerIsolatedHost 主機實例。

  • LogicApp Adapter 資料夾是在 BizTalk 安裝目錄中建立,並包含兩個服務:ManagementReceiveService

    • 管理:由邏輯應用程式工作流程中的 BizTalk 連接器用來使用數據網關聯機到 BizTalk Server。 此管理服務可讓 BizTalk Server 使用數據閘道從邏輯應用程式工作流程接收訊息。 此服務只會在 BizTalk 的接收端使用,而不是傳送端。

    • ReceiveService:BizTalk 連接器在具有接收位置的邏輯應用程式工作流程中使用。 此服務負責從邏輯應用程式工作流程傳送訊息。 此服務只會在 BizTalk 的接收端使用,而不是傳送端。

從工作流程接收訊息

本節列出 BizTalk Server 從邏輯應用程式工作流程接收訊息所需的額外步驟。 由於 Azure 入口網站可以變更,某些步驟可能不符合所列的步驟。

僅限 BizTalk Server 2016:NullAdapter 和 Azure Logic Apps 配接器

如果您安裝 Azure Logic Apps 配接器和 NullAdapter,您可能會看到下列錯誤:

已存在另一個具有相同 OutboundEngineCLSID 值的適配卡

Azure Logic Apps 配接器與 NullAdapter 的 Adapter 類別 GUID 相同。 如果您需要這兩個配接器,請遵循下列步驟:

  1. 下載 GitHub上的 NullAdapter 原始碼。

  2. NullSendAdapter.cs 類別中,更新 GUID。

  3. NullAdapter.reg 檔案中,更新 OutboundEngineCLSID 值。

  4. 建置及部署 NullAdapter。

步驟 1:建立 IIS 應用程式

IIS 應用程式會使用 ManagementReceiveService。 您可以使用新的或現有的應用程式集區來執行 IIS 應用程式。 AppPool 的身分識別需要與執行 BizTalk 服務的帳戶相同的群組成員資格,例如 bizTalk 應用程式使用者 ,以及 BizTalk 隔離主機使用者 群組。

提示

如果您建立新的應用程式集區,請務必保留預設的 .NET CLR 版本和受控管線。 請記住,選擇具有與 BizTalk 服務帳戶相同 BizTalk 群組成員資格的身分識別(進階設定)。

建立管理 IIS 應用程式

邏輯應用程式工作流程中的 BizTalkServer 連接器會使用此 IIS 應用程式的 URL,透過 BizTalk Server 上的數據閘道進行連線。

BizTalk Server 2020 和更新版本
  1. 使用 BizTalk 組態精靈設定 REST API。

    如需詳細資訊,請參閱 組態指南

    如需 REST API 的詳細資訊,請參閱 BizTalk REST API 參考

  2. 在網頁瀏覽器中,移至 http://localhost/BizTalkManagementService/Schemas

    根據網頁瀏覽器,架構清單隨即出現,或出現開啟並儲存 schemas.json 檔案的提示。 如果兩者都沒有發生,請檢查您的 REST API 組態。

BizTalk Server 2016
  1. 開啟 Internet Information Services (IIS) 管理員。

  2. 從 [默認網站 快捷方式功能表,選取 [新增應用程式]。

  3. 在這個新的應用程式中:

    1. 輸入應用程式的 別名(名稱),例如 IISLogicApp

    2. 選取應用程式集區。

    3. 將實體路徑 設定為

    4. 測試設定,以確認應用程式集區身分識別通過 驗證授權 測試。

  4. 選取 [確定] 以儲存變更。

  5. 在網頁瀏覽器中,移至 http://localhost/YourApplicationAlias/schemas?api-version=2016-10-26,例如:http://localhost/IISLogicApp/Schemas?api-version=2016-10-26

    根據網頁瀏覽器,架構清單隨即出現,或出現開啟並儲存 schemas.json 檔案的提示。 如果兩者都沒有發生,您的 AppPool 身分識別可能會遺失 BizTalk 群組的成員資格。

建立 BizTalk ReceiveService IIS 應用程式

邏輯應用程式工作流程中的 BizTalkServer 連接器會針對您指定的接收位置使用此 IIS 應用程式的 URL。

  1. 開啟 Internet Information Services (IIS) 管理員。

  2. 開啟 [默認網站 快捷方式功能表,然後選取 [[新增應用程式]。

  3. 在這個新的應用程式中,請遵循下列步驟:

    1. 輸入應用程式的 別名(名稱),例如 ReceiveWCFService

    2. 選取與先前 IIS 應用程式相同的應用程式集區。

    3. 根據版本,將 實體路徑 設定為下列專案:

      • BizTalk Server 2020:C:\Program Files (x86)\Microsoft BizTalk Server\LogicApp Adapter\ReceiveService
      • BizTalk Server 2016:C:\Program Files (x86)\Microsoft BizTalk Server 2016\LogicApp Adapter\ReceiveService
    4. 測試設定,以確認應用程式集區身分識別通過 驗證授權 測試。

  4. 選取 [確定] 以儲存變更。

步驟 2:建立邏輯應用程式工作流程

  1. Azure 入口網站中,建立新的邏輯應用程式資源和空白工作流程。

  2. 根據您建立的工作流程,遵循下列一般步驟,將名為 要求 觸發程式新增至工作流程

  3. 請遵循下列一般步驟 ,將名為 準備 訊息的 BizTalkServer 動作新增至工作流程。

  4. 在動作的連接窗格上,提供下列資訊:

    財產 描述
    透過內部部署數據網關聯機 如果您使用內部部署資料閘道,請選擇 。 只有在下列案例中才需要閘道:

    - 您使用的是內部部署 BizTalk Server。

    - 您在 Azure 虛擬機上使用 BizTalk Server,但虛擬機不會公開為 HTTP 端點。
    連線名稱 輸入連線的易記名稱。
    BizTalk Server URL 在 IIS 應用程式 URL 中輸入 BizTalk 管理的完整功能變數名稱 (FQDN)。 例如,輸入 http://BizTalkServerName.corp.contoso.com/IISLogicApp/
    驗證類型 選取 [Windows]。
    Username 輸入 IIS 應用程式集區的身分識別。
    密碼 輸入 IIS 應用程式集區的密碼。
    閘道 - 訂用帳戶:選取與您在 Azure 入口網站中建立之閘道資源相關聯的 Azure 訂用帳戶。

    - 閘道:選取您在 Azure 入口網站中建立的閘道資源。
  5. 選取 [[建立新]。

  6. 動作資訊窗格出現之後,請提供必要的詳細資料,例如:

    財產 描述
    本文 選取 HTTP 主體輸出。
    架構 選取您想要使用的架構。

    注意

    此步驟假設您已熟悉 BizTalk 中的架構,並知道您想要的架構。 如果您不確定,請部署 HelloWorld SDK 範例、更新其成品以使用 Azure Logic Apps 配接器,以及使用其架構和範例訊息。

  7. 遵循下列一般步驟,將名為 傳送訊息 的 BizTalkServer 動作 新增至工作流程。

    財產 描述
    接收位置 從清單中選取 URL,或輸入 ReceiveService IIS 應用程式 URL 的完整功能變數名稱 (FQDN)。 例如,輸入 http://BizTalkServerName.corp.contoso.com/ReceiveWCFService/Service1.svc

    當您建立接收位置時,也會在 [一般] 索引標籤上輸入此確切 URL,作為接收位置傳輸屬性中的 [公用位址]
    本文 從上述 BizTalk Server 動作中選取本文輸出。
  8. 儲存您的工作流程。 在設計工具工具列上,選取 [[儲存]

    此步驟會自動建立端點 URL,其會出現在 要求 觸發程式中。 您可以將 HTTP 要求傳送至此 URL,觸發程式 或導致工作流程開始執行。

  9. 複製並儲存端點 URL。 您需要此資訊才能 步驟 4:傳送訊息

步驟 3:建立接收埠和接收位置

本節說明如何建立您自己的成品。

提示

您可以部署 HelloWorld SDK 範例,而不是建立您自己的接收埠和接收位置,然後更新成品以使用 Azure Logic Apps 配接器。

  1. 在 BizTalk Server 管理中,展開下列專案:

    BizTalk Server 管理>BizTalk 群組>應用程式

  2. 展開應用程式以用於執行接收位置。 例如,展開 BizTalk 應用程式 - 接收

  3. 從 [接收埠] 快捷方式功能表中,選取 [[新增],然後選取 [單向接收埠]。

  4. 在 [接收埠 屬性中,輸入下列資訊:

    財產 描述
    名稱 輸入接收埠的名稱。 例如,輸入 LAReceivePort
    驗證
    - 沒有驗證(預設值):停用驗證。

    - 如果驗證失敗卸除訊息:啟用驗證,但卸除未驗證的訊息。

    - 驗證失敗時保留訊息:啟用驗證並保留未經驗證的訊息。
    啟用失敗訊息路由 將處理失敗的任何訊息路由傳送至訂閱應用程式,例如另一個接收埠或協調流程排程。 清除此選項以暫停失敗的訊息,併產生負面通知 (NACK)。 默認會清除選項。

    如需詳細資訊,請參閱 如何為接收埠啟用失敗訊息路由
  5. 選取 [接收位置],然後選取 [[新增]

  6. 輸入接收位置的 名稱。 例如,輸入 LAReceiveLoc

  7. 針對 [類型],選取 LogicApp,然後選取 [設定]。

  8. 在 [一般] 索引標籤上,設定邏輯應用程式工作流程的端點位址:

    財產 描述
    位址 (URI) 必填。 輸入 BizTalk ReceiveService IIS 應用程式 URL,如下所示:

    格式:/{your-IIS-app2-name}/Service1.svc

    範例:/ReceiveWCFService/Service1.svc
    公用位址 必填。 輸入下列 URL,如下所示:

    格式:http://{fully-qualified-machine-name}/{your-IIS-App2-name}/Service1.svc

    範例:http://btsProd.northamerica.corp.contoso.com/ReceiveWCFService/Service1.svc

    此確切 URL 也會列在接收位置的邏輯應用程式中。
  9. 選擇性。 在 [系結] 索引標籤上,設定基礎 WCF-WebHttp 系結的任何逾時和編碼相關屬性。 處理大型訊息時,下列屬性很有用:

    財產 描述
    開啟逾時 輸入通道開啟作業必須完成的時間間隔。 這個值大於或等於 System.TimeSpan.Zero

    - 預設值:00:01:00
    - 最大值:23:59:59
    傳送逾時 輸入傳送作業要完成的預期時間間隔。 這個值大於或等於 System.TimeSpan.Zero。 如果您使用要求-回應接收埠,此值會指定整個互動完成的時間範圍,即使用戶端傳回大型訊息也一樣。

    - 預設值:00:01:00
    - 最大值:23:59:59
    關閉逾時 輸入通道關閉作業預期完成的時間間隔。 這個值大於或等於 System.TimeSpan.Zero

    - 預設值:00:01:00
    - 最大值:23:59:59
    接收的訊息大小上限 (位元元組) 輸入訊息的大小上限,包括要透過網路接收的標頭。 訊息大小是由為每個訊息配置的記憶體數量所系結。 您可以使用此屬性來限制拒絕服務 (DoS) 攻擊的風險。

    - 預設值:65536
    - 最大值:2147483647
    並行呼叫數目上限 輸入單一服務實例的並行呼叫數目。 超過限制的呼叫會排入佇列。 將此值設定為 0 相當於將值設定為 Int32.MaxValue

    默認值:200
  10. 選擇性。 在 [安全性] 索引標籤上,設定任何安全性屬性。 為了開發目的,您可以選取 [無]

    財產 描述
    安全性模式 - :傳輸期間不會保護訊息。

    - 傳輸:安全性是使用 HTTPS 傳輸來提供。 SOAP 訊息會使用 HTTPS 來保護。 若要使用此模式,您必須在 IIS 中設定安全套接字層 (SSL)。

    - TransportCredentialOnly:預設值。
    傳輸客戶端認證類型 當您使用客戶端驗證時,請選擇認證類型。

    - :傳輸層級不會發生驗證。

    - 基本:使用基本身份驗證透過網路以純文字傳送使用者名稱和密碼。 您必須建立對應至認證的網域或本機用戶帳戶。

    - 摘要:使用摘要式驗證透過網路傳送密碼作為哈希值。 僅適用於執行 Windows Server 作業系統驗證之域控制器的網域。 您必須建立對應至客戶端認證的網域或本機用戶帳戶。

    - Ntlm (預設值):用戶端會傳送認證,而不傳送密碼至此接收位置。 您必須建立對應至客戶端認證的網域或本機用戶帳戶。

    - Windows:Windows 整合式驗證會交涉 Kerberos 或 NTLM,如果網域存在,偏好使用 Kerberos。 若要使用 Kerberos,請務必讓用戶端使用服務主體名稱 (SPN) 來識別服務。 您必須建立對應至客戶端認證的網域或本機用戶帳戶。

    - 憑證:使用用戶端憑證。 您必須在這部計算機的受信任跟證書授權單位證書存儲中安裝用戶端 X.509 憑證的 CA 憑證鏈結,用戶端才能向這個接收位置進行驗證。

    - InheritedFromHost
    使用單一登錄
  11. 選擇性。 在 [訊息] 索引標籤上,使用 [輸出 HTTP 標頭] 屬性來新增任何自定義標頭,並使用其他屬性來協助處理錯誤:

    財產 描述
    輸出 HTTP 標頭 輸入您想要在回應消息上加上戳記的任何 HTTP 標頭。
    在失敗 停用位置 如果輸入處理因接收管線失敗或路由失敗而失敗,請停用接收位置。 默認會清除選項。
    失敗時暫停要求訊息 如果輸入處理因接收管線失敗或路由失敗而失敗,請暫停要求訊息。 默認會清除選項。
    在錯誤 中包含例外狀況詳細數據 發生錯誤時,傳回任何 SOAP 錯誤以協助偵錯。 默認會清除選項。

如需更多接收埠和位置屬性,請參閱 管理接收位置

步驟 4:傳送訊息

  1. 開啟工具以傳送 HTTP 訊息或要求。

  2. 在邏輯應用程式工作流程中貼上您從 要求 觸發程式儲存的端點 URL。 您已在先前的步驟中複製此 URL。

  3. 選取 [POST 作為要使用的 HTTP 方法。 將 內容類型 標頭設定為 application/json。 在要求本文中,貼上下列 JSON,並遵循工具的指示來傳送 HTTP 訊息。

    {"hello":"world"}
    

    由於要求是 BizTalk 的單向呼叫,因此您應該預期會有 HTTP 202。

  4. 如果您使用 HelloWorld SDK 範例,請移至 BizTalk 伺服器。 您的傳送資料夾中可能有檔案。

將訊息傳送至邏輯應用程式工作流程

步驟 1:建立邏輯應用程式工作流程

  1. Azure 入口網站中,建立新的邏輯應用程式資源和空白工作流程。

  2. 遵循下列一般步驟,將名為 要求 觸發程式新增至工作流程

  3. 假設您有Microsoft公司或學校帳戶,遵循下列一般步驟,將名為 Office 365 Outlook 動作新增至工作流程 傳送 電子郵件。

  4. 如果出現提示,請登入 Office 365 Outlook。

  5. 在動作的連接窗格上,提供下列資訊:

    財產 描述
    輸入您的 Office 365 電子郵件位址。
    主旨 輸入從 BizTalk傳送
    本文 在編輯方塊內選取 。 當閃電和函式圖示出現時,請選取閃電圖示以開啟動態內容清單。 從清單中,在 [收到 HTTP 要求時,選取您想要包含在電子郵件中的觸發程序輸出。

    您的工作流程看起來類似下列範例:

    螢幕快照顯示具有範例要求觸發程式的工作流程。

    螢幕快照顯示具有範例 Office 365 Outlook 動作資訊的工作流程。

  6. 儲存您的工作流程。 在設計工具上,選取 [儲存]

  7. 要求觸發程式 資訊中,複製 HTTP URL,此 URL 會在您儲存工作流程時自動建立。 下一個步驟需要此 URL。 如果 URL 未出現,您可能必須關閉並重新開啟邏輯應用程式。

步驟 2:建立傳送埠

若要讓 BizTalk Server 將訊息傳送至邏輯應用程式工作流程,工作流程必須以 manual 觸發程式開頭,例如 收到 HTTP 要求時

  1. 在 BizTalk Server 管理中,展開下列專案:

    BizTalk Server 管理>BizTalk 群組>應用程式

  2. 展開要用來執行傳送埠的應用程式。 例如,展開 BizTalk 應用程式 - 傳送

  3. 從 [傳送埠] 快捷方式功能表中,選取 [[新增],然後選取 [靜態單向傳送埠]

  4. 輸入傳送埠 名稱。 例如,輸入 LASendPort

  5. 從 [類型] 列表中,選取 [logicApp] ,然後選取 [[設定]。

  6. 在 [[一般] 索引標籤上,選擇選項,為您的邏輯應用程式工作流程觸發程式提供 回呼 URI

    選項 1

    觸發程式 (Callback URI) 屬性中,貼上先前複製 的 HTTP URL

    提示

    您也可以使用 Azure Resource Manager API 來取得此 URI。

    選項 2

    如果您不知道 回呼 URI,請選取 [設定],然後登入 Azure。 選取 訂用帳戶資源群組Logic AppTrigger的值。

  7. 選擇性。 在 [系結] 索引標籤上,設定基礎 WCF-WebHttp 系結的任何逾時和編碼相關屬性。 處理大型訊息時,這些屬性很有用:

    財產 描述
    開啟逾時 輸入通道開啟作業必須完成的時間間隔。 這個值大於或等於 System.TimeSpan.Zero

    - 預設值:00:01:00
    - 最大值:23:59:59
    傳送逾時 輸入傳送作業要完成的預期時間間隔。 這個值大於或等於 System.TimeSpan.Zero。 如果您使用要求-回應接收埠,此值會指定整個互動完成的時間範圍,即使用戶端傳回大型訊息也一樣。

    - 預設值:00:01:00
    - 最大值:23:59:59
    關閉逾時 輸入通道關閉作業預期完成的時間間隔。 這個值大於或等於 System.TimeSpan.Zero

    - 預設值:00:01:00
    - 最大值:23:59:59
    接收的訊息大小上限 (位元元組) 輸入訊息的大小上限,包括要透過網路接收的標頭。 訊息大小是由為每個訊息配置的記憶體數量所系結。 您可以使用此屬性來限制拒絕服務 (DoS) 攻擊的風險。

    Azure Logic Apps 配接器會使用緩衝傳輸模式中的 WebHttpBinding 類別 來與端點通訊。 針對緩衝傳輸模式,WebHttpBinding.MaxBufferSize 屬性一律等於此屬性的值。

    - 預設值:65536
    - 最大值:2147483647
  8. 選擇性。 在 [訊息] 索引標籤上,使用 [輸出 HTTP 標頭] 屬性,在傳出訊息上新增任何自定義標頭。

  9. 選取 [確定] [確定] 以儲存您的設定。

如需更多傳送埠屬性,請參閱 管理傳送埠和傳送埠群組

步驟 3:傳送一些訊息

您可以使用 檔案 配接器來建立接收埠和接收位置。 請確定邏輯應用程式資源已啟用。

  1. 建立接收埠,例如 *FileSendPort

  2. 建立接收位置,並設定類似下列範例值的屬性:

    財產 範例輸入
    接收資料夾 C:\temp\In\
    檔案遮罩 *.txt
    管線 PassThruReceive
  3. 在您先前建立的傳送埠中,將 Filter 設定為下列範例值:

    財產 算子 價值
    BTS。ReceivePortName == FileSendPort
  4. 使用下列文字建立名為 {file-name} 的文本檔.txt,然後將此文本文件作為範例訊息:

    <Data>
      <DataID>DataID_0</DataID>
      <DataDetails>DataDetails_0</DataDetails>
    </Data>
    
  5. {file-name}.txt 複製到接收資料夾。

    傳送埠會使用您提供的 URI,將 .txt 檔案傳送至邏輯應用程式工作流程。 工作流程收到檔案之後,工作流程會將包含範例訊息的電子郵件傳送至指定的 To 位址。

下一個