共用方式為


如何設定 WCF-NetMsmq 傳送埠

您可以透過程式設計方式或使用 BizTalk 管理主控台來設定 WCF-NetMsmq 傳送埠。

設定屬性

BizTalk Explorer 物件模型會針對具有TransportTypeData讀取/寫入屬性的傳送埠ITransportInfo公開配接器特定介面。 這個屬性會以名稱-值配對的 XML 字串格式接受 WCF-NetMsmq 傳送埠組態屬性包。

不需要ITransportInfo介面的TransportTypeData屬性。 如果沒有設定此屬性,配接器就會針對 WCF-NetMsmq 傳送埠組態使用如下表所示的預設值。

下表列出您可以在 BizTalk 總管物件模型中針對 WCF-NetMsmq 傳送埠設定的組態屬性。

屬性名稱 類型 描述
身分識別 XML BLOB

範例:

<身分識別>

<userPrincipalName value=「 username@contoso.com 」 />

</身份>
指定此傳送埠所預期服務的識別。 這些設定可讓此傳送埠驗證服務。 在用戶端與服務之間的交握程序中,Windows Communication Foundation (WCF) 基礎結構可確保預期之服務的識別能夠與這個項目的值相符。

預設為空字串。
StaticAction 字串 指定傳出訊息的 SOAPAction 標頭欄位。 您也可以透過訊息內容屬性 WCF 來設定這個屬性 管線或協調流程中的動作。 您可以透過兩種不同的方式指定此值:單一動作格式和動作對應格式。 如果您以單一動作格式設定此屬性,例如, http://contoso.com/Svc/Op1 傳出訊息的 SOAPAction 標頭一律會設定為此屬性中指定的值。

如果您以動作對應格式設定此屬性,則傳出 SOAPAction 標頭是由 BTS 決定。作業 內容屬性。 例如,如果此屬性設定為下列 XML 格式和BTS。Operation屬性設定為 Op1,WCF 傳送配接器會針對傳出SOAPAction標頭使用 ' http://contoso.com/Svc/Op1 ''。

<BtsActionMapping>

<作業名稱=「Op1」 Action=「 http://contoso.com/Svc/Op1" ; />

<作業名稱=「Op2」 Action=「 http://contoso.com/Svc/Op2" ; />

</BtsActionMapping>

如果傳出訊息來自協調流程埠,協調流程實例就會動態設定 BTS。具有 埠作業名稱的 Operation 屬性。 如果傳出訊息是以內容為基礎的路由傳送,您可以設定 BTS。 管線元件中的 Operation 屬性。

預設為空字串。
OpenTimeout System.TimeSpan 指定時間值,表示可供完成通道開啟作業的時間間隔。

預設值:00:01:00
SendTimeout System.TimeSpan 指定時間值,表示可供完成傳送作業的時間間隔。 如果您使用請求-回應傳送埠,這個值會指定完成整個互動的時間長度,即使服務傳回很大的訊息也是如此。

預設值:00:01:00
CloseTimeout System.TimeSpan 指定時間值,表示可供完成通道關閉作業的時間間隔。

預設值:00:01:00
EnableTransactional Boolean 為目的地服務指定訊息佇列的類型:交易式或非交易式。 如果此屬性設定為 True,則此傳送埠處理的每個訊息只會傳遞一次,而且傳送者會收到傳遞失敗的通知。 若要透過交易式傳送埠傳送訊息,服務的 持久性exactlyOnce 繫結項目都必須設定為 True。 如果此屬性設定為 False,則會傳送訊息,而不會保證傳遞。

預設值: True
DeadLetterQueue 列舉

- - 不使用寄不出的信件佇列。
- 系統 - 使用全系統的寄不出的信件佇列。
- 自訂 - 使用自訂寄不出的信件佇列。
指定無法傳遞到應用程式的訊息將會傳輸到的無效信件佇列。 如需傳遞至寄不出的信件佇列之訊息的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF-NetMsmq 傳輸屬性對話方塊、傳送、系結索引標籤。

注意:自訂寄不出的信件佇列僅在 Windows Vista 發行的 MSMQ) 4.0 (訊息佇列中受到支援。

預設值: 系統
CustomDeadLetterQueue 字串 針對每個應用程式寄不出的信件佇列位置指定 net.msmq 配置的完整 URI,其中會放置已過期或傳遞失敗的訊息。 例如,net.msmq://localhost/deadLetterQueueName。 寄不出的信件佇列是傳送應用程式佇列管理員上的佇列,用於無法傳遞的過期訊息。 如果 DeadLetterQueue 屬性設定為 Custom,則需要這個屬性。

預設為空字串。
TimeToLive System.TimeSpan 指定訊息在過期並置入無效信件佇列之前的有效時間有多長。 設定這個屬性可確保時間緊迫的訊息,在由此傳送埠處理之前不會已經過時。 在佇列中的訊息,若是沒有在指定的時間間隔內由此傳送埠耗用,便會被視為過期。 過期的訊息會傳送到特殊的佇列,稱為無法寄出的信件佇列。 寄不出的信件佇列位置是使用 DeadLetterQueue 屬性設定。

預設值:1.00:00:00
UseSourceJournal Boolean 指定由此傳送埠處理的訊息複本是否應該存放在來源日誌佇列中。

預設值: False
SecurityMode 列舉

-
- 消息
- 運輸
- 兩者

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

預設值: 傳輸
MsmqAuthenticationMode 列舉

-
- WindowsDomain
- 證書

如需MsmqAuthenticationMode屬性成員名稱的詳細資訊,請參閱WCF-NetMsmq 傳輸屬性對話方塊中MSMQ 驗證模式屬性、傳送、安全性索引標籤,以及 UI 指引和開發人員 API 命名空間參考
指定訊息如何由 MSMQ 傳輸進行驗證。

預設值: WindowsDomain
MsmqProtectionLevel 列舉

- :無保護。
- 符號:訊息已簽署。
- EncryptAndSign:訊息已加密並簽署。 若要使用此保護層級,您必須啟用MSMQActive Directory 整合
指定在 MSMQ 傳輸層維持訊息安全的方式。

預設值: Sign
MsmqSecureHashAlgorithm 列舉

- MD5
- SHA1
- SHA25
- SHA512
指定用來計算雜湊的雜湊演算法。 如果 MsmqProtectionLevel 屬性設定為 None,則無法使用此屬性。

預設值: SHA1
MsmqEncryptionAlgorithm 列舉

- RC4Stream
- Aes
指定在訊息佇列管理員之間傳輸訊息時,要在連線上使用之訊息加密的演算法。 只有在 MsmqProtectionLevel 屬性設定為 EncryptAndSign時,才能使用這個屬性。

預設值: RC4Stream
MessageClientCredentialType 列舉

-
- Windows
- 使用者
- 證書

如需MessageClientCredentialType屬性成員名稱的詳細資訊,請參閱WCF-NetMsmq 傳輸屬性對話方塊、傳送、安全性索引標籤中的 WCF-NetMsmq 傳輸屬性對話方塊、傳送、安全性索引標籤和開發人員 API 命名空間參考
指定當使用以訊息為基礎的安全性來執行用戶端驗證時,所要使用的認證類型。

預設值: Windows
AlgorithmSuite 列舉

如需AlgorithmSuite屬性成員名稱的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF-NetMsmq 傳輸屬性對話方塊、傳送、安全性索引標籤中的演算法套件屬性。
指定訊息加密和 Key Wrap 演算法。 這些演算法會對應到安全性原則語言 (WS-SecurityPolicy) 規格中所指定的演算法。

預設值: Basic256
ClientCertificate 字串 指定 X.509 憑證的憑證指紋,以便向服務驗證此傳送埠。 如果 ClientCredentialsType 屬性設定為 Certificate,則需要此屬性。 要用於此屬性的憑證必須安裝在目前使用者位置的[我的存放區] 中。

預設為空字串。
ServiceCertificate 字串 指定 X.509 憑證的指紋,以便驗證此傳送埠傳送訊息的目標服務。 要用於此屬性的憑證必須安裝在本機電腦位置的[其他人員存放區]。

預設為空字串。
AffiliateApplicationName 字串 指定要針對企業單一登入 (SSO) 使用的分支機構應用程式。

預設為空字串。
UseSSO Boolean 指定是否要使用「單一登入」來擷取用戶端認證,以供目的地伺服器驗證。

預設值: False
使用者名稱 String UseSSO 屬性設定為 False時,指定要用於向目的地伺服器進行驗證的使用者名稱。 您不需要對此屬性使用 domain\user 格式。

預設為空字串。
密碼 String UseSSO 屬性設定為 False時,指定要用於向目的地伺服器進行驗證的密碼。

預設為空字串。
OutboundBodyLocation 列舉

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

如需如何使用 OutboundBodyLocation 屬性的詳細資訊,請參閱 指定 WCF 配接器的訊息本文
指定傳出 WCF 訊息之 SOAP Body 元素的資料選取範圍。

預設值: UseBodyElement
OutboundXMLTemplate 字串

如需如何使用 OutboundXMLTemplate 屬性的詳細資訊,請參閱 指定 WCF 配接器的訊息本文
針對傳出訊息之 SOAP Body 元素的內容,指定 XML 格式的範本。 如果 OutboundBodyLocation 屬性設定為 UseTemplate,則需要這個屬性。

預設為空字串。

使用 BizTalk 管理主控台設定 WCF-NetMsmq 傳送埠

您可以在 BizTalk 管理主控台中設定 WCF-NetMsmq 傳送埠配接器變數。 如果沒有設定傳送埠的屬性,系統就會針對 WCF-NetMsmq 傳送埠組態使用如上表所示的預設值。

設定 WCF-NetMsmq 傳送埠的變數

  1. 在 [BizTalk 管理主控台] 中建立新的傳送埠,或按兩下現有的傳送埠進行修改。 如需詳細資訊,請參閱 如何建立傳送埠。 在UI 指引和開發人員 API 命名空間參考的 [一般] 索引標籤的 [傳輸] 區段中,針對 [類型] 選項設定所有傳送埠選項,並指定WCF-NetMsmq

  2. 在 [一般] 索引標籤的 [傳輸] 區段中,按一下[類型] 旁的 [設定] 按鈕。

  3. [WCF-NetMsmq 傳輸屬性 ] 對話方塊的 [ 一般 ] 索引標籤上,設定端點位址、服務識別,以及 WCF-NetMsmq 傳送埠的 SOAPAction 標頭。 如需WCF-NetMsmq 傳輸屬性對話方塊中 [一般] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF-NetMsmq 傳輸屬性對話方塊、傳送、一般索引標籤。

  4. [WCF-NetMsmq 傳輸屬性 ] 對話方塊的 [ 系結 ] 索引標籤上,設定逾時和交易屬性和佇列設定。 如需WCF-NetMsmq 傳輸屬性對話方塊中 [結] 索引標籤的詳細資訊,請參閱UI 指引和開發人員 API 命名空間參考中的WCF-NetMsmq 傳輸屬性對話方塊、傳送、系結索引標籤。

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

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

以程式設計方式設定 WCF-NetMsmq 傳送埠

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

<CustomProps>  
  <ServiceCertificate vt="8" />  
  <UseSSO vt="11">0</UseSSO>  
  <CloseTimeout vt="8">00:01:00</CloseTimeout>  
  <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>  
  <MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>  
  <OpenTimeout vt="8">00:01:00</OpenTimeout>  
  <UseSourceJournal vt="11">0</UseSourceJournal>  
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>  
  <SecurityMode vt="8">Transport</SecurityMode>  
  <CustomDeadLetterQueue vt="8" />  
  <ClientCertificate vt="8" />  
  <MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>  
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>  
  <MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>  
  <EnableTransaction vt="11">-1</EnableTransaction>  
  <TimeToLive vt="8">1.00:00:00</TimeToLive>  
  <MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>  
  <DeadLetterQueue vt="8">System</DeadLetterQueue>  
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>  
</CustomProps>  

下列程式碼片段說明如何建立 WCF-NetMsmq 傳送埠:

// Use BizTalk Explorer object model to create new WCF-NetMsmq send port.  
string server = System.Environment.MachineName;  
string database = "BizTalkMgmtDb";  
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);  
string transportConfigData = @"<CustomProps>  
                                 <StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>  
                                 <OpenTimeout vt=""8"">00:01:00</OpenTimeout>  
                               </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 static one-way send port  
SendPort sendPort = application.AddNewSendPort(false, false);   
sendPort.Name = "SampleSendPort";  
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-NetMsmq"];  
sendPort.PrimaryTransport.Address = "net.msmq://mycomputer/private/samplequeue";  
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change  
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];  
// Save  
explorer.SaveChanges();  

另請參閱

WCF 配接器屬性結構描述和屬性
安裝 WCF 配接器的憑證
指定 WCF 配接器的訊息內文
設定 WCF-NetMsmq 配接器
使用 WCF 配接器內容屬性設定動態傳送埠