HTTP傳送適配器

HTTP send 介面卡會從 BizTalk Server 接收訊息,並在 HTTP POST 請求中將其傳送到目的地 URL。 HTTP 發送配接器從 BizTalk 訊息物件的內容部分取得訊息內容。 HTTP 發送介面卡會忽略 BizTalk 訊息物件的所有其他部分。

當介面卡將訊息傳送至目的地 URL 後,BizTalk 訊息引擎接收到 HTTP 成功狀態碼後,HTTP 發送介面卡會從 MessageBox 資料庫中刪除該訊息。

支援 HTTP 訊息的重定向功能,並可在發送埠設定。

BizTalk 伺服器將 HTTP 傳送介面卡作為原生 BizTalk 應用程式進行託管。 它支援單向訊息傳送以及請求回應傳輸。 HTTP send 介面卡的發送位置是一個獨立的 URL,透過傳送埠進行設定。 此唯一 URL 可包含附加在基礎 URL 上的查詢字串。

HTTP Send 適配器的批次支援

HTTP 發送介面卡不支援批次處理操作。

HTTP Send 介面卡的分塊編碼支援

若啟用 Enable 區塊編碼 設定選項,當請求大小超過 8 KB,HTTP 發送介面卡會使用區塊編碼發送請求訊息。 若使用 HTTP 代理伺服器,HTTP 發送介面卡不會使用分塊編碼,且總是在傳送前先分階段資料。 預設啟用 區塊編碼 設定選項。

當發送介面卡收到回應訊息時,可以接受帶有分塊編碼主體部分的回應訊息。

HTTP 發送適配器的用戶端認證

HTTP 發送介面卡透過以下其中一種認證方式與目的伺服器進行驗證:

  • 匿名。 HTTP 介面卡在連接目標伺服器時不會傳送任何憑證。 如果目的伺服器允許匿名認證,則會使用目標伺服器上設定的匿名帳號的憑證。

  • 基本。 HTTP 轉接器會透過 HTTP 連接以明文傳送使用者名稱和密碼。

  • 摘要。 HTTP 介面卡會透過 HTTP 連線以加密格式傳送密碼。

  • Kerberos。 使用者名稱和密碼都不會透過 HTTP 連線傳送。 HTTP 介面卡使用執行 HTTP 發送介面卡過程中的憑證來進行此認證類型。

    此外,HTTP send 介面卡可向網頁伺服器提供用戶端安全套接字層(SSL)憑證,若伺服器需要或接受該憑證。

HTTP Send 適配器的用戶端憑證

HTTP 發送介面卡能與接受或要求客戶端憑證的伺服器建立安全連線。 若指定客戶端憑證,HTTP 發送介面卡在連接需要或接受客戶端憑證的伺服器時會使用該憑證。 若未指定用戶端憑證,且目的伺服器需要用戶端憑證,HTTP 傳送介面卡將無法傳送訊息,並遵循標準重試邏輯。

HTTP 發送適配器使用 BizTalk Server 程序所使用的帳號之個人存儲中的客戶端憑證。 證書由其指紋標示。 如果 HTTP 發送介面卡因任何原因未能載入憑證,該訊息將被暫停。

HTTP 適配器的單一登入支援

你可以透過 BizTalk 管理主控台設定企業單一登入(SSO),以便搭配 HTTP 接收位置或傳送埠使用。 本主題說明 SSO 如何與 HTTP 介面卡合作。

HTTP 接收位置的單一登入支援

當 Microsoft 網際網路資訊服務(IIS)從網頁用戶端接收到 HTTP 請求時,IIS 會進行使用者的認證。 Internet Server Application Programming Interface(ISAPI)擴充功能會偽裝成 Microsoft Windows 使用者,然後呼叫 SSO 憑證庫以取得加密票證。 此工單在訊息上下文中以 SSOTicket 屬性儲存。

在直通情境中,BizTalk 訊息引擎會將訊息導向 MessageBox 資料庫。 當介面卡從 MessageBox 資料庫收到訊息時,HTTP 介面卡會呼叫 ISSOTicket.RedeemTicket 方法 ,並附上加密的工單及應用程式名稱,從 SSO 儲存庫取得後端憑證。 HTTP 介面卡接著利用外部憑證連接到後端系統並處理請求。 欲了解更多聯盟申請資訊,請參閱 SSO 聯盟申請。

當編排呼叫該轉接器時,BizTalk 訊息引擎會將此訊息傳送至 MessageBox 資料庫。 編排應確保包含票證訊息的 SSOTicket 上下文屬性與 Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID 上下文屬性均維持不變。 當適配器從 MessageBox 資料庫收到此訊息時,適配器會呼叫 RedeemTicket,並攜帶加密票據從 SSO 儲存庫檢索後端憑證。 設計排程的使用者應明確將此屬性複製到訊息中。

HTTP 傳送轉接器的單一登入支援

若啟用 SSO,當 HTTP 發送埠收到帶有 Secure 屬性的訊息時,會呼叫 SSO 伺服器驗證並兌換該工單給聯盟應用程式。 管理應用程式、聯盟管理員或聯盟應用程式的 SSO 管理員可以呼叫 SSO 來兌換票券。 SSO 接著解密工單並取得後端憑證。 直通與協調情境與 HTTP 發送埠相同。

預設情況下,HTTP 發送埠的 SSO 是被禁用的。 欲瞭解更多關於為 HTTP 傳送埠啟用單一登入(SSO)的資訊,請參閱 「設定 HTTP 傳送埠」。

備註

你只能用單一登入搭配基本認證和摘要認證。

要正確實作對 HTTP 接收和發送適配器的單一登入支援,必須符合以下條件:

  • 同一使用者帳號必須在以下地方指定:

    • 應用程式池識別碼(IIS 7.0)或由 HTTP 接收介面卡監控的 IIS 虛擬目錄的託管 COM+ 應用程式識別碼。 欲了解更多關於如何配置 IIS 以設定 HTTP 接收位置的資訊,請參閱 《如何配置 IIS 以達成 HTTP 接收位置》。

    • 用於執行 HTTP 配接器之隔離主機實例的登入憑證。 關於如何設定主機實例的登入憑證,請參閱 《如何修改主機實例屬性》。

  • HTTP 介面卡所使用的隔離主機必須設定為驗證可信。 關於如何將主機設定為可信認證的資訊,請參閱 「如何修改主機屬性」。

HTTP 或 SOAP 適配器因傳輸失敗而生成的否認確認 (NACK) 訊息

當訊息成功傳送時,如果啟用了投遞通知,BizTalk 訊息引擎會向訊息框發布相關的確認(ACK)訊息。 同樣地,當訊息被 BizTalk 訊息引擎暫停或編排被編排引擎暫停時,BizTalk 伺服器會向訊息盒發布相關的否認回應(NACK)訊息。 NACK 訊息包含上下文屬性及由 SOAP 錯誤組成的訊息主體部分。 若 NACK 訊息因 HTTP 或 SOAP 介面卡傳輸失敗而產生,SOAP 錯誤會包含來自目的網頁伺服器回應的 Headers 元素與 Body 元素。 以下是因 HTTP 傳輸失敗而產生的 NACK 中 SOAP 錯誤的範例:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
   <SOAP:Body>  
      <SOAP:Fault>  
         <faultcode>Microsoft BizTalk Server Negative Acknowledgment</faultcode>   
         <faultstring>An error occurred while processing the message, refer to the details section for more information</faultstring>   
         <faultactor>http://localhost/receivestandard.asp</faultactor>   
         <detail>  
            <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
            <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
            <ErrorCode>0x80131600</ErrorCode>  
            <ErrorCategory>0</ErrorCategory>  
            <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
            <ErrorDetail>  
            <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
               <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
               <Body>We could not locate the page you requested. Please check the URL.</Body>  
            </HttpErrorDetail>  
            </ErrorDetail>  
            </ns0:NACK>  
         </detail>  
      </SOAP:Fault>  
   </SOAP:Body>  
</SOAP:Envelope>  

備註

標頭元素與主體元素限制為 48 KB。 標頭元素會四捨五入至最接近的完整標頭值組合,且不超過限制。 Body 元素被截斷至 48 KB。

備註

若沒有對應訂閱,NACK 和 ACK 訊息會被丟棄。 NACK 與 ACK 訊息不會被 BizTalk 訊息引擎暫停。

要註冊 NACK 訊息,您可以選擇以下任一方式:

  • 建立一個帶有相應訊息上下文屬性過濾器的 send 埠。 請參閱 UI 指引中的訊息上下文屬性,並參考開發者 API 命名空間的資訊上下文屬性,包含與訊息確認相關的屬性。

  • 從標記為 Delivery Notification = 已傳送的協調埠發送。 若編排埠被標示為 Delivery Notification = 已傳送,編排將等待收到傳送訊息的 ACK 或 NACK。 如果產生了 NACK,則會被路由到調度系統,調度系統會拋出 DeliveryFailureException。 DeliveryFailureException 是從 SOAP 錯誤中反序列化的,該錯誤包含在 NACK 訊息體中。 若要從 SOAP 錯誤中擷取回傳回編排的例外訊息字串,將 DeliveryFailureException 投射為 SoapException,然後從 SOAP Detail 區段存取 InnerXml。 以下程式碼範例示範如何做到這點:

    // Cast the DeliveryFailureException to a SoapException…  
    System.Web.Services.Protocols.SoapException se = (System.Web.Services.Protocols.SoapException)e.InnerException;  
    System.Diagnostics.Trace.WriteLine(se.Detail.InnerXml);  
    //e is an Microsoft.XLANGs.BaseTypes.DeliveryFailureException  
    //object type created in an Exception handler  
    
    

    上述範例程式碼將回傳類似以下的 XML 片段:

    <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
    <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
    <ErrorCode>0x80131600</ErrorCode>  
    <ErrorCategory>0</ErrorCategory>  
    <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
    <ErrorDetail>  
    <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
       <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
       <Body>We could not locate the page you requested. Please check the URL.</Body>  
    </HttpErrorDetail>  
    </ErrorDetail>  
    </ns0:NACK>  
    

另請參閱

HTTP 介面卡
UI 指引與開發者 API 命名空間參考中的 SSO COM 物件