如何設定 WCF-Custom 接收位置
您可以用程式設計方式或使用 BizTalk 管理主控台來設定 WCF-Custom 接收位置。
設定屬性
「BizTalk 總管物件模型」可讓您以程式設計的方式建立和設定接收位置。 BizTalk Explorer 物件模型會公開具有TransportTypeData讀取/寫入屬性的IReceiveLocation接收位置組態介面。 這個屬性會以 XML 字串之成對的名稱-數值格式接受 WCF-Custom 接收位置組態屬性包。 若要在 BizTalk Explorer 物件模型中設定此屬性,您必須設定IReceiveLocation介面的InboundTransportLocation屬性。
不需要設定 IReceiveLocation介面的TransportTypeData屬性。 若沒有設定此屬性,WCF-Custom 配接器就會針對 WCF-Custom 接收位置組態使用預設值,如下表所示。
下表列出您可在「BizTalk 總管物件模型」中,針對 WCF-Custom 接收位置設定的組態屬性。
屬性名稱 | 類型 | 描述 |
---|---|---|
身分識別 | XML BLOB 範例: <身分識別> <userPrincipalName value=「 username@contoso.com 」 /> </身份> |
指定此接收位置所提供服務的識別。 可針對 Identity 屬性指定的值會根據安全性設定而有所不同。 這些設定可讓用戶端驗證此接收位置。 在用戶端與服務之間的交握程序中,Windows Communication Foundation (WCF) 基礎結構可確保預期之服務的識別能夠與這個項目的值相符。 預設為空字串。 |
BindingType | 列舉 - basicHttpBinding - customBinding - mexHttpBinding - mexHttpsBinding - mexNamedPipeBinding - mexTcpBinding - netMsmqBinding - netNamedPipeBinding - netPeerTcpBinding - netTcpBinding - wsDualHttpBinding - wsFederationHttpBinding - wsHttpBinding |
指定此接收位置所用之端點要使用的繫結類型。 注意: 如果您使用自訂系結,可以使用自訂系結來設定 BindingType 屬性。 如需如何使用自訂系結的詳細資訊,請參閱 如何使用 WCF 配接器啟用 WCF 擴充點。 預設為空字串。 |
BindingConfiguration | XML BLOB 範例: <系結名稱=「netNamedPipeBinding」 >< security mode=「None」 / >< /binding> |
使用繫結項目指定 XML 字串,< 以設定 Windows Communication Foundation (WCF) 所提供的不同類型的預先定義系結。 > 如需有關系統提供之繫結與自訂繫結的詳細資訊,請參考「請參閱」一節中的適當主題。 注意:BizTalk Server不支援您可以使用BindingConfiguration屬性設定的所有綁定延伸模組專案類型。 預設為空字串。 |
ServiceBehaviorConfiguration | XML BLOB 範例: <行為名稱=「SampleServiceBehavior」 >< serviceMetadata HTTPGetEnabled=「true」 HTTPGetUrl=「 http://mycomputer:9995/SampleMex" ; / >< serviceCredentials / >< /behavior> |
使用serviceBehaviors > 元素的行為專案 < 來指定 XML 字串,以設定 WCF 服務的行為設定。>< 如需serviceBehaviors > 元素的詳細資訊 <,請參閱另請參閱中適當的主題。 預設為空字串。 |
EndpointBehaviorConfiguration | XML BLOB 範例: <行為名稱=「sampleBehavior」 >< callbackTimeouts / >< /behavior> |
使用endpointBehaviors > 元素的行為專案 < 來指定 XML 字串,以設定 WCF 端點的行為設定。>< 如需endpointBehaviors > 元素的詳細資訊 <,請參閱另請參閱中的適當主題。 注意:BizTalk Server不支援您可以使用EndpointBehaviorConfiguration屬性設定的所有行為延伸專案類型。 預設為空字串。 |
CredentialType | 列舉 - 無:當此接收位置傳送請求訊息來輪詢外部服務時,請勿使用任何認證,或此接收位置不需要輪詢任何外部服務。 - IssueTicket:使用 Enterprise Single Sign-On (SSO) 擷取用戶端認證來發出 SSO 票證。 這個選項需要使用安全性模式,以允許這個接收位置模擬使用者帳戶來發出 SSO 票證。 - UserAccount:當此接收位置傳送請求訊息來輪詢外部服務時,請使用 Username 和Password 屬性中指定的認證。 - GetCredentials:當這個接收位置傳送請求訊息來輪詢外部服務時,請使用 AffiliateApplicationName 屬性中指定的 SSO 聯盟應用程式。 |
指定接收位置在輪詢外部服務時要使用的認證類型。 預設值: 無 |
使用者名稱 | String | 指定在輪詢外部服務以擷取回應訊息時,要針對這個接收位置所使用的使用者名稱。 當 CredentialType 屬性設定為 UserAccount時,需要這個屬性。 預設為空字串。 |
密碼 | String | 指定在輪詢外部服務以擷取回應訊息時,要針對這個接收位置所使用的密碼。 當 CredentialType 屬性設定為 UserAccount時,需要這個屬性。 預設為空字串。 |
AffiliateApplicationName | 字串 | 當這個接收位置傳送請求訊息以輪詢外部服務時,指定 SSO 分支機構應用程式以傳回要使用的外部認證。 指定的 SSO 分支機構應用程式在其下執行這個接收位置的 Windows 帳戶以及外部服務的帳戶之間,必須具有對應。 當 CredentialType 屬性設定為 GetCredentials時,需要這個屬性。 預設為空字串。 |
OrderedProcessing | Boolean | 指定在處理訊息 (配合 NetMsmq 繫結使用) 時,是否保存訊息順序。 預設值: False |
InboundBodyLocation | 列舉 - UseBodyElement - 使用傳入訊息的 SOAP Body 元素內容來建立 BizTalk 訊息本文部分。 如果 Body 元素有一個以上的子元素,則只有第一個元素會成為 BizTalk 訊息內文部分。 - UseEnvelope - 從傳入訊息的整個 SOAP 信封 建立 BizTalk 訊息本文部分。 - UseBodyPath - 使用 InboundBodyPathExpression 屬性中的本文路徑運算式來建立 BizTalk 訊息本文部分。 內文路徑運算式會依照內送訊息 SOAP Body 元素的直系子元素來進行評估。 此屬性只對請求-回應連接埠有效。 如需如何使用 InboundBodyLocation 屬性的詳細資訊,請參閱 指定 WCF 配接器的訊息本文。 |
為傳入 WCF 訊息的 SOAP Body 元素指定資料選取範圍。 預設值: UseBodyElement |
InboundBodyPathExpression | 字串 如需如何使用 InboundBodyPathExpression 屬性的詳細資訊,請參閱 WCF 配接器屬性架構和屬性。 |
指定內文路徑運算式來識別用於建立 BizTalk 訊息內文部分之內送訊息的特定部分。 此本文路徑運算式會根據傳入訊息之 SOAP Body 節點的立即子項目進行評估。 如果此內文路徑運算式傳回一個以上的節點,則只會為 BizTalk 訊息內文部分選擇第一個節點。 如果 InboundBodyLocation 屬性設定為 UseBodyPath,則需要這個屬性。 預設為空字串。 |
InboundNodeEncoding | 列舉 - Base64 - Base64 編碼。 - 十六進位 - 十六進位編碼。 - 字串 - 文字編碼 - UTF-8。 - XML - WCF 配接器會使用 InboundBodyPathExpression中主體路徑運算式所選取節點的外部 XML,建立 BizTalk 訊息本文。 |
指定 WCF-Custom 接收配接器用來解碼 InboundBodyPathExpression中所指定主體路徑運算式所識別的節點編碼類型。 如果 InboundBodyLocation 屬性設定為 UseBodyPath,則需要這個屬性。 預設值: XML |
OutboundBodyLocation | 列舉 - UseBodyElement - 使用 BizTalk 訊息本文部分,為傳出回應訊息建立 SOAP Body 元素的內容。 - UseTemplate - 使用 OutboundXMLTemplate 屬性中提供的範本,為傳出回應訊息建立 SOAP Body 元素的內容。 如需如何使用 OutboundBodyLocation 屬性的詳細資訊,請參閱 指定 WCF 配接器的訊息本文。 |
為傳出 WCF 訊息的 SOAP Body 元素指定資料選取範圍。 此屬性只適用於要求-回應接收位置。 預設值: UseBodyElement |
OutboundXMLTemplate | 字串 如需如何使用 OutboundXMLTemplate 屬性的詳細資訊,請參閱 指定 WCF 配接器的訊息本文。 |
指定 XML 格式的範本,以取得傳出回應訊息之 SOAP Body 元素的內容。 如果 OutboundBodyLocation 屬性設定為 UseTemplate,則需要這個屬性。 此屬性只適用於要求-回應接收位置。 預設為空字串。 |
DisableLocationOnFailure | Boolean | 指定是否停用由於接收管線失敗或路由失敗造成輸入處理失敗的接收位置。 預設值: False |
SuspendMessageOnFailure | Boolean | 指定是否擱置因接收管線失敗或路由失敗而造成輸入處理失敗的要求訊息。 預設值: True |
IncludeExceptionDetailInFaults | Boolean | 指定基於偵錯目的傳回用戶端的 SOAP 錯誤詳細資料中,是否包括 Managed 例外狀況資訊。 預設值: False |
ReferencedBindings | XML BLOB 範例: <BindingConfiguration vt=「8」> <wsFederationHttpBinding> <binding name=「sampleBinding」> <security mode=「Message」> <message issuedKeyType=「AsymmetricKey」> <issuer address=「 http://www.contoso.com/samplests" ; binding=」wsFederationHttpBinding「 bindingConfiguration=」contosoSTSBinding「/> </消息> </安全> </綁定> </wsFederationHttpBinding> </BindingConfiguration> <ReferencedBindings vt=「8」> <bindings> <wsFederationHttpBinding> <系結名稱=「contosoSTSBinding」> <security mode=「Message」> <message negotiateServiceCredential=「false」> <issuer address=「 http://northwind.com/samplests" ; bindingConfiguration=」northwindBinding「 binding=」wsHttpBinding」> </發行> </消息> </安全> </綁定> </wsFederationHttpBinding> <wsHttpBinding> <binding name=「northwindBinding」> <security mode=「Message」> <message clientCredentialType=「Certificate」 /> </安全> </綁定> </wsHttpBinding> </綁定> </ReferencedBindings>附注:ReferencedBinding屬性不得包含BindingConfiguration屬性中使用的系結組態。 |
針對wsFederationHttpBinding和customBinding指定簽發者 > 元素 bindingConfiguration 屬性 <所參考的系結組態,這表示發出安全性權杖的安全性權杖服務 (STS) 。 如需簽發者 > 專案的詳細資訊 <,請參閱 主題 https://go.microsoft.com/fwlink/?LinkId=83476 中的「 < 簽發者 > 」。 系結資訊包括wsFederationHttpBinding和customBinding的簽發者 > 元素,可以透過 WCF-Custom 和 WCF-CustomIsolated 配接器的 BindingConfiguration 屬性來設定。 < 此屬性的所有參考系結組態都必須以綁定 > 項的形式 <放置。 注意: 您無法在傳輸屬性對話方塊中的 [ 系 結] 索引標籤上設定此屬性。 您可以透過 WCF-Custom 和 WCF-CustomIsolated 配接器之傳輸屬性對話方塊中的 [ 匯入/匯出 ] 索引標籤匯入和匯出此屬性。 注意:簽發者 > 元素的 <bindingConfiguration屬性必須參考這個屬性中的有效系結名稱。 注意:如果這個參考鏈結鏈結未建立迴圈相依性,參考系結組態中的簽發者 > 元素也可以參考其 屬性中的不同系結組態。 < 預設為空字串。 |
使用 BizTalk 管理主控台設定 WCF-Custom 接收位置
您可以在 [BizTalk Server 管理] 主控台中設定 WCF-Custom 接收位置配接器變數。 若接收位置並未設定屬性,系統就會使用 [BizTalk 管理主控台] 中的預設接收處理常式值。
注意
完成下列程序之前,您必須已經新增接收埠。 如需詳細資訊,請參閱 如何建立接收埠。
設定 WCF-Custom 接收位置的變數
如果設定 WCF-Custom 配接器時,您打算使用自訂繫結元素、自訂行為項目和自訂通道元件這類 WCF 擴充性點,必須將實作擴充性點和所有相依組件的組件,同時加入至 BizTalk 處理電腦 (執行階段電腦) 和管理電腦上的全域組件快取。 此外,您必須在 machine.config 檔案註冊延伸模組元件。 如需如何搭配 WCF 自訂配接器使用 WCF 擴充點的詳細資訊,請參閱 如何使用 WCF 配接器啟用 WCF 擴充點。
在 BizTalk 管理主控台中,依序展開 [BizTalk Server系統管理]、[BizTalk 群組]、[應用程式] 和 [應用程式] ,然後展開您要在其中建立接收位置的應用程式。
在 [BizTalk 管理主控台] 的左窗格中,按一下 [接收埠] 節點。 然後在右窗格中,使用滑鼠右鍵按一下與現有接收位置關聯的接收埠,或是您要與新接收位置關聯的接收埠,然後按一下 [屬性]。
在 [ 接收埠內容] 對話方塊的左窗格中,選取 [ 接收位置],然後在右窗格中按兩下現有的接收位置,或按一下 [ 新增] 以建立新的接收位置。
在 [接收位置屬性] 對話方塊的[類型] 旁的 [傳輸] 區段中,從下拉式清單中選取[WCF-Custom],然後按一下 [設定]。
在 [WCF-自訂傳輸屬性 ] 對話方塊的 [ 一般 ] 索引標籤上,設定 WCF-Custom 接收位置的端點位址和服務識別。 如需WCF-自訂傳輸屬性對話方塊中 [一般] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、一般索引標籤。
在 [WCF-自訂傳輸屬性 ] 對話方塊的 [ 系 結] 索引標籤上,為 WCF 設定不同類型的預先定義或自訂系結。 如需WCF-自訂傳輸屬性對話方塊中 [系結] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、系結索引標籤。
在 [WCF-自訂傳輸屬性 ] 對話方塊的 [ 行為 ] 索引標籤上,設定此接收位置的端點和服務行為。 結束點行為是一組行為延伸模組項目,可修改或延伸服務或是用戶端功能。 如需WCF-自訂傳輸屬性對話方塊中 [行為] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、行為索引標籤。
在 [WCF-自訂傳輸屬性 ] 對話方塊的 [ 其他 ] 索引標籤上,設定此接收位置在輪詢外部服務時要使用的認證,以及此接收位置是否會在處理訊息時保留訊息順序。 如需WCF-自訂傳輸屬性對話方塊中[其他] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、其他索引標籤。
在 [WCF-自訂傳輸屬性 ] 對話方塊的 [ 訊息 ] 索引標籤上,指定 SOAP Body 元素的資料選取範圍。 如需WCF-自訂傳輸屬性對話方塊中 [訊息] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、訊息索引標籤。
在[WCF-自訂傳輸屬性] 對話方塊的 [匯入/匯出] 索引標籤上,匯入和匯出 [一般] 索引標籤上的 [位址 (URI]) 和[端點識別] 屬性、[系結] 索引標籤上的系結資訊,以及此接收位置的 [行為] 索引標籤上的端點行為。 如需WCF-自訂傳輸屬性對話方塊中 [匯入/匯出] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF 自訂傳輸屬性對話方塊、接收、匯入匯出索引標籤。
以程式設計方式設定 WCF-Custom 接收位置
您可以使用下列格式來設定屬性:
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<BindingConfiguration vt="8"><binding name="netNamedPipeBinding"><security mode="None" /></binding></BindingConfiguration>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<CredentialType vt="8">GetCredentials</CredentialType>
<Identity vt="8" />
<ServiceBehaviorConfiguration vt="8"><behavior name="SampleServiceBehavior"><serviceMetadata httpGetEnabled="true" httpGetUrl="http://mycomputer:9995/SampleService/Mex" /><serviceCredentials /></behavior></ServiceBehaviorConfiguration>
<Password vt="1" />
<OrderedProcessing vt="11">-1</OrderedProcessing>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<AffiliateApplicationName vt="8">SampleAffiliateApplication</AffiliateApplicationName>
<DisableLocationOnFailure vt="11">0</DisableLocationOnFailure>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<BindingType vt="8">netNamedPipeBinding</BindingType>
<UserName vt="8">Hello</UserName>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EndpointBehaviorConfiguration vt="8"><behavior name="EndpointBehavior" /></EndpointBehaviorConfiguration>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
下列程式碼片段會示範如何建立 WCF-Custom 接收位置:
// Use BizTalk Explorer object model to create new WCF-Custom receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<BindingConfiguration vt=""8""><binding name=""netNamedPipeBinding""><security mode=""None"" /></binding></BindingConfiguration>
<BindingType vt=""8"">netNamedPipeBinding</BindingType>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-Custom
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-Custom" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.pipe://mycomputer/samplePipeName";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-Custom"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
另請參閱
發行 WCF 接收配接器的服務中繼資料管理 BizTalk 主機和主機實例如何變更服務帳戶和密碼安裝 WCF 配接器的憑證 指定 WCF 配接器的訊息本文設定 WCF-Custom 配接器如何建立endpointBehaviors > 系結行為的分支機搆應用程式 < 行為 ><<>><<serviceBehaviors >