共用方式為


如何設定 WCF-NetTcp 接收位置

您可以透過程式設計方式或使用 BizTalk 管理控制台來設定 WCF-NetTcp 接收位置。

設定屬性

BizTalk Explorer 物件模型可讓您以程序設計方式建立和設定接收位置。 BizTalk Explorer 物件模型會公開具有 TransportTypeData 讀取/寫入屬性的IReceiveLocation 接收位置組態介面。 這個屬性接受 WCF-NetTcp 接收位置組態屬性包,格式為名稱/值組 XML 字串。 若要在 BizTalk Explorer 物件模型中設定此屬性,您必須設定 IReceiveLocation 介面的 InboundTransportLocation 屬性。

IReceiveLocation 介面的 TransportTypeData 屬性不需要設定。 如果未設定,WCF-NetTcp 配接器會使用 WCF-NetTcp 接收位置設定的預設值,如下表所示。

下表列出您可以在 WCF-NetTcp 接收位置的 BizTalk Explorer 物件模型中設定的組態屬性。

屬性名稱 類型 說明
身分識別 XML Blob

範例:

<身份>

<userPrincipalName value=“username@contoso.com” />

</身份>
指定這個接收位置所提供的服務識別。 可以為 Identity 屬性指定的值會根據安全性組態而有所不同。 這些設定可讓客戶端驗證此接收位置。 Windows Communication Foundation(WCF)基礎結構會在用戶端和服務之間的交握過程中,確保預期的服務識別符合此元素的值。

預設值是空字串。
OpenTimeout System.TimeSpan 指定一個時間間隔值,表示完成通道開啟操作所提供的時間間隔。

默認值:00:01:00
SendTimeout System.TimeSpan 指定時間範圍值,指出傳送作業完成所提供的時間間隔。 如果您使用要求-回應接收埠,此值會指定整個互動完成的時間範圍,即使用戶端傳回大型訊息也一樣。

默認值:00:01:00
CloseTimeout System.TimeSpan 指定時間範圍值,指出通道關閉作業要完成的時間間隔。

默認值:00:01:00
最大接收訊息大小 整數 針對可在網路接收的訊息(包括標頭)指定大小上限,以位元組為單位。 訊息的大小會受限於為每個訊息配置的記憶體數量。 您可以使用此屬性來限制拒絕服務 (DoS) 攻擊的風險。

WCF-NetTcp 配接器會利用緩衝傳輸模式中的 NetTcpBinding 類別與端點通訊。 針對緩衝傳輸模式, NetTcpBinding.MaxBufferSize 屬性一律等於此屬性的值。

預設值:65536
EnableTransaction 布爾邏輯 指定是否將訊息使用來自客戶端的交易流程提交至 MessageBox 資料庫。 如果此屬性設定為 True,則客戶端必須使用 TransactionProtocol 屬性中指定的交易通訊協定來提交訊息。 如果用戶端在交易範圍外提交訊息,則此接收位置會將例外狀況傳回給用戶端,而且不會暫停任何訊息。

此選項僅適用於單向接收位置。 如果用戶端在交易式內容中提交要求-回應接收位置的訊息,則會傳回例外狀況給用戶端,而且不會暫停任何訊息。

預設值:False
TransactionProtocol 列舉

- OleTransaction
- WS-AtomicTransaction
指定要與這個接收位置搭配使用的交易通訊協定。

默認值: OleTransaction
LeaseTimeout System.TimeSpan 指定使用中集區連線的最大存留期。 經過指定的時間之後,連接會在完成當前請求後關閉。

WCF-NetTcp 配接器會利用 NetTcpBinding 類別與端點通訊。 在負載平衡案例中使用 NetTcpBinding 時,請考慮減少預設租用逾時。如需使用 NetTcpBinding 時負載平衡的詳細資訊,請參閱另請參閱一節中的適當主題。

默認值:00:05:00
MaxConcurrentCalls 整數 指定單一服務實例的並行呼叫數目。 超出限制的來電會排入佇列。 此屬性的範圍是從 1 到 Int32.MaxValue。

默認值:200
SecurityMode 列舉

- 沒有
- 消息
- 運輸
- TransportWithMessageCredential

如需 SecurityMode 屬性成員名稱的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考WCF-NetTcp 傳輸屬性對話框、接收、安全性索引卷標的安全性模式屬性。
指定所使用的安全性類型。

預設值: 傳輸
TransportClientCredentialType 列舉

- 沒有
- Windows作業系統
- 證書

如需 TransportClientCredentialType 屬性成員名稱的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考WCF-NetTcp 傳輸屬性對話框、接收、安全性索引卷標的傳輸客戶端認證類型屬性。
指定執行客戶端驗證時要使用的認證類型。

默認值: Windows
傳輸保護級別 列舉

- :沒有保護。
- 簽名:訊息已完成簽名。
- EncryptAndSign:訊息會加密並簽署。
在 TCP 傳輸層級定義安全性。 簽署訊息可降低傳輸訊息時第三方竄改的風險。 加密會在傳輸期間提供數據層級隱私權。

默認值: EncryptAndSign
MessageClientCredentialType 列舉

- 沒有
- Windows作業系統
- UserName
- 證書

如需 MessageClientCredentialType 屬性成員名稱的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考WCF-NetTcp 傳輸屬性對話框、接收、安全性索引標籤中的 Message 用戶端認證類型屬性。
指定使用訊息式安全性執行客戶端驗證時要使用的認證類型。

默認值: Windows
AlgorithmSuite 列舉

如需 AlgorithmSuite 屬性成員名稱的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考WCF-NetTcp 傳輸屬性對話框、接收、安全性索引卷標的 Algorithm suite 屬性。
指定訊息加密和金鑰包裝演算法。 這些演算法會對應至安全策略語言 (WS-SecurityPolicy) 規格中指定的演算法。

默認值: Basic256
ServiceCertificate 繩子 指定用戶端用來驗證服務時所用的接收位置之 X.509 憑證的指紋。 要用於此屬性的憑證必須安裝到 [目前使用者] 位置的 [我的存放區] 中。 注意: 您必須將服務憑證安裝到用戶帳戶的 目前使用者 位置,才能裝載此接收位置的接收處理程式。

預設值是空字串。
UseSSO 布爾邏輯 指定是否要使用 Enterprise Single Sign-On (SSO) 來擷取客戶端認證來發出 SSO 票證。 如需支援 SSO 的安全性組態詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考WCF-NetTcp 傳輸屬性對話方塊、接收、安全性索引卷標的一節。
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-NetTcp 接收配接器用來解碼 InboundBodyPathExpression 中所標識之主體路徑運算式的節點時所用的編碼類型。 如果 InboundBodyLocation 屬性設定為 UseBodyPath,則需要此屬性。

預設值: XML
OutboundBodyLocation 列舉

- UseBodyElement - 使用 BizTalk 訊息本文部分,為傳出回應消息建立 SOAP Body 元素的內容。
- UseTemplate - 使用 OutboundXMLTemplate 屬性中提供的範本,為傳出回應消息建立 SOAP Body 元素的內容。

若您需要瞭解如何使用 OutboundBodyLocation 屬性,請參閱 WCF 配接器訊息本文的指定方法
指定傳出 WCF 訊息之 SOAP Body 元素的數據選取範圍。 此屬性僅適用於要求-回應接收位置。

默認值: UseBodyElement
OutboundXMLTemplate 繩子

若要了解如何使用 OutboundXMLTemplate 屬性,請參閱 指定 WCF 配接器的訊息本文
為傳出回應消息之 SOAP Body 元素的內容指定 XML 格式的範本。 如果 OutboundBodyLocation 屬性設定為 UseTemplate,則需要此屬性。 此屬性僅適用於要求-回應接收位置。

預設值是空字串。
SuspendMessageOnFailure 布爾邏輯 指定是否要暫停因接收管線失敗或路由失敗而導致輸入處理失敗的要求訊息。

默認值: True
IncludeExceptionDetailInFaults 布爾邏輯 指定是否要在傳回給用戶端的SOAP錯誤詳細數據中包含Managed 例外狀況資訊,以供偵錯之用。

默認值: False

使用 BizTalk 管理控制台設定 WCF-NetTcp 接收位置

您可以在 BizTalk 管理控制台中設定 WCF-NetTcp 接收位置配接器變數。 如果未在接收位置設定屬性,則會使用 BizTalk 管理控制台中設定的預設接收處理程式值。

備註

完成下列程式之前,您必須先新增接收埠。 如需詳細資訊,請參閱 如何建立接收埠

設定 WCF-NetTcp 接收位置的變數

  1. 在 BizTalk 管理控制台中,依序展開 [ BizTalk Server 2009 系統管理]、[ BizTalk 群組]、[ 應用程式],然後展開您要建立接收位置的應用程式。

  2. 在 BizTalk 管理控制台的左窗格中,按兩下 [ 接收埠] 節點。 然後在右窗格中,以滑鼠右鍵按一下與現有接收位置相關聯的接收埠,或您想要與新的接收位置產生關聯的接收埠,然後按一下[屬性]。

  3. 在 [ 接收埠內容] 對話框的左窗格中,選取 [ 接收位置],然後在右窗格中按兩下現有的接收位置,或按兩下 [ 新增] 來建立新的接收位置。

  4. 在 [接收位置屬性] 對話方塊的 [類型] 旁的 [傳輸] 區段中,從下拉式清單中選取 [WCF-NetTcp],然後按兩下 [設定]。

  5. [WCF-NetTcp 傳輸屬性 ] 對話方塊的 [ 一般 ] 索引標籤上,設定 WCF-NetTcp 接收位置的端點地址和服務識別。 如需 [WCF-NetTcp 傳輸屬性] 對話方塊中的 [一般] 索引標籤的詳細資訊,請參閱UI指引和開發人員 API 命名空間參考中的 [WCF-NetTcp 傳輸屬性對話框、接收、一般] 索引標籤。

  6. WCF-NetTcp 傳輸屬性 對話方塊的 [繫結] 索引標籤上,設定逾時和交易屬性。 如需有關 系結 索引標籤在 WCF-NetTcp 傳輸屬性 對話方塊中的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考中的 WCF-NetTcp 傳輸屬性對話框、接收、系結 索引標籤。

  7. [WCF-NetTcp 傳輸屬性 ] 對話方塊的 [ 安全性 ] 索引標籤上,定義 WCF-NetTcp 接收位置的安全性功能。 如需 [WCF-NetTcp 傳輸屬性] 對話方塊中 [安全性] 索引卷標的詳細資訊,請參閱UI指引和開發人員 API 命名空間參考中的 [WCF-NetTcp 傳輸屬性對話框、接收、安全性] 索引標籤。

  8. [WCF-NetTcp 傳輸屬性 ] 對話方塊的 [ 訊息 ] 索引標籤上,指定 SOAP Body 元素的數據選取範圍。 如需 [WCF-NetTcp 傳輸屬性] 對話方塊中 [訊息] 索引卷標的詳細資訊,請參閱 UI 指引和開發人員 API 命名空間參考中的 [WCF-NetTcp 傳輸屬性對話框、接收、訊息] 索引標籤。

以程式化方式設定 WCF-NetTcp 接收位置

您可以使用下列格式來設定屬性:

<CustomProps>
  <InboundBodyPathExpression vt="8" />
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <UseSSO vt="11">0</UseSSO>
  <MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
  <SendTimeout vt="8">00:01:00</SendTimeout>
  <OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
  <OpenTimeout vt="8">00:01:00</OpenTimeout>
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
  <SecurityMode vt="8">Message</SecurityMode>
  <TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
  <MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
  <CloseTimeout vt="8">00:01:00</CloseTimeout>
  <SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
  <EnableTransaction vt="11">0</EnableTransaction>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
  <MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
  <ServiceCertificate vt="8" />
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>

下列代碼段說明如何建立 WCF-NetTcp 接收位置:

謹慎

此範例或指引會參考敏感性資訊,例如連接字串或使用者名稱和密碼。 請勿在程式代碼中硬式編碼這些值,並確定您使用最安全的驗證來保護機密數據。 如需詳細資訊,請參閱下列文件:

// Use BizTalk Explorer object model to create new WCF-NetTcp 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>
  <InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
  <UseSSO vt=""11"">0</UseSSO>
  <Identity vt=""8"">
    <identity>
    <userPrincipalName value=""username@contoso.com"" />
    </identity>
  </Identity>
</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-NetTcp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
    if("WCF-NetTcp" == explorer.ReceiveHandlers[i].TransportType.Name)
        break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.tcp://mycomputer/samplepath";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetTcp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();

另請參閱

發行 WCF 接收配接器的服務元數據管理 BizTalk 主機和主機實例如何變更服務帳戶和密碼為 WCF 配接器安裝憑證指定 WCF 配接器的訊息主體負載平衡設定 WCF-NetTcp 配接器