HTTP 接收配接器
HTTP 接收配接器的接收位置是透過 BizTalk Server 管理主控台設定的相異 URL。
您可以為從用戶端執行的非同步提交或同步提交設定 HTTP 接收配接器。 非同步提交是單向提交,而同步提交則是雙向或要求-回應提交。
您會使用 IIS 安全性來驗證和授權內送要求。
HTTP 接收配接器可以透過 HTTP POST 要求或 HTTP GET 要求,以兩種不同的方式接收訊息。
當 HTTP 接收配接器以 HTTP POST 要求接收訊息時,會發生以下一連串的事件:
在 BizTalk Server 中設定的 URL 會在接收位置收到新訊息。
接收配接器會建立「BizTalk 訊息」物件,以便將訊息提交至伺服器。
接收配接器只會建立只有一個部分的 BizTalk Message 物件,也就是本文部分。
在已讀取訊息並成功提交至伺服器之後,HTTP 接收配接器會將 HTTP 代碼 202 傳回表示已接收要求的用戶端。
此外,HTTP 接收配接器可以在 HTTP 回應時傳送訊息相互關聯 Token。 這個相互關聯 Token 代表 BizTalk Server 中的訊息。 若 HTTP 接收位置是在要求-回應連接埠中,配接器會傳回成功碼 200 及回應訊息。
當 HTTP 接收配接器處理來自 HTTP GET 要求的訊息時,接收配接器會建立「BizTalk 訊息」物件,並將 HTTP GET 要求的解譯查詢字串放入 BizTalk 訊息內文部分。 HTTP 配接器會使用下列演算法,來選取要放入 BizTalk 訊息內文部分的查詢字串:
如果 HTTP 接收配接器收到 HTTP GET 要求,它會使用問號 (?) 符號做為分隔符,將傳入 URI 字串分割成兩個部分。
URI 字串的第一個部分是問號分隔符之前的部分,會複製到訊息內容上的 InboundTransportLocation 屬性。 InboundTransportLocation 屬性可唯一識別 BizTalk Server 收到訊息的位置。 引擎會使用此屬性,來決定要為訊息執行哪一個接收位置。
HTTP 配接器會接受其餘 URI 字串、問號分隔符後面的部分,並將它複製到 BizTalk 訊息本文部分。
若 HTTP 接收配接器收到空的 HTTP GET 或 HTTP POST 作業,就會拒絕它。
以下範例將顯示 HTTP 接收配接器如何處理 HTTP GET 要求收到的訊息。 這些範例假設 HTTP 接收配接器是使用下列兩個接收位置來設定:
/vroot/BTSHTTPReceive.dll
/vroot/BTSHTTPReceive.dll?LocationID=1
假設用戶端的 HTTP GET 要求如下:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1
HTTP 接收配接器採取的動作如下:
將訊息內容上的 InboundTransportLocation 屬性設定為 /vroot/BTSHTTPReceive.dll,而 BizTalk Message 物件本文部分等於 LocationID=1。
假設用戶端的 HTTP GET 要求如下:
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1&MyParam=My%20Value
HTTP 接收配接器採取的動作如下:
將 InboundTransportLocation 屬性設定為 /vroot/BTSHTTPReceive.dll,而 BizTalk Message 物件本文部分等於 LocationID=1&MyParam=My Value。
假設用戶端的 HTTP GET 要求如下:
http://servername/vroot/BTSHTTPReceive.dll
HTTP 接收配接器採取的動作如下:
拒絕由於 HTTP GET 要求格式不正確而發出的要求。
HTTP 接收配接器會將訊息以批次方式提交至伺服器。 用以提交訊息至伺服器的批次大小,可在 HTTP 配接器接收處理常式上設定。
BizTalk Server HTTP 接收配接器具有設定設定[暫停失敗的要求],以控制 HTTP 要求因接收管線失敗、對應失敗或路由失敗而無法進行輸入處理的情況。 此設定有兩個可能的值:
False。 這是預設值。 HTTP 接收配接器會捨棄因接收管線失敗、對應失敗或路由傳送失敗,而造成輸入處理失敗的訊息。 此外,會傳送錯誤狀態碼 401 或 500 至用戶端。
正確。 HTTP 接收配接器會擱置因接收管線失敗、對應失敗或路由傳送失敗,而造成輸入處理失敗的訊息。 如果是單向接收埠, 則會將接受 的狀態代碼 202 傳送至用戶端。 針對雙向接收埠, 錯誤 狀態代碼 500 會傳送至用戶端。
HTTP 接收配接器會接受含有區塊編碼內文訊息的 HTTP 要求。 接收配接器會使用區塊編碼,來傳送內文大小大於 4 KB 的回應訊息。 您可以藉由設定 HTTP 配接器組態和微調參數中所述的 DWORD 登錄專案來關閉區塊編碼
只要為 HTTP 接收位置使用具有用戶端憑證的安全連線,HTTP 接收配接器就會從 Microsoft Internet Information Services (IIS) 取得用戶端憑證指紋,並將它新增至該位置上透過 HTTP 接收之所有訊息的訊息內容中。 HTTP 接收配接器會設定下列的系統屬性:
SourcePartyEvidenceQualifier = "Certificate"
SourcePartyEvidence = <certificate thumbprint>
下列清單包含 HTTP 接收配接器所傳回的狀態碼。
200 確定。 配接器已成功處理要求訊息並產生回應。 配接器會從 HTTP 要求-回應連接埠傳回 HTTP 回應的狀態碼。
202 已接受訊息。 配接器已成功將訊息提交至伺服器,或是已擱置單向要求。 配接器會從單向 HTTP 接收埠傳回 HTTP 回應的此狀態碼。
401 拒絕存取。 在需要驗證的接收埠上接收了 HTTP 要求,但該訊息的安全性檢查失敗。 例如,無法解析合作對象或是未解密訊息。
500 內部伺服器錯誤。 處理 HTTP 要求的一般失敗。 除非設定 [暫停失敗的要求] 設定設為 True,否則訊息不會由 BizTalk Server 暫停,否則會針對雙向接收埠設定為 True。