簡體   English   中英

將Biztalk消息上下文發送到WCF服務

[英]Send Biztalk message context to WCF service

使用WCF適配器時,我將消息主體部分作為WCF消息的主體發送,但是我可以做為使Biztalk消息上下文也要發送(希望在WCF消息頭中)嗎?

MSDN中以下頁面簡要說明了使用WCF適配器在BizTalk外部發送消息時如何使用自定義SOAP標頭。

基本上,您不能直接在BizTalk外部發送BizTalk消息的上下文。 這是沒有意義的。 而是,您可以在BizTalk消息的上下文中選擇屬性的子集,以通過自定義SOAP頭發送到WCF適配器。

處理來自WCF請求的自定義SOAP標頭

與傳出請求關聯的SOAP標頭必須顯式寫入到傳出消息的上下文中。

使用WCF適配器時,SOAP頭是使用內置的WCF.OutboundCustomHeaders上下文屬性定義的。 此屬性保存所有自定義SOAP標頭,並包裝在附加的<headers>標記內。

可以在業務流程中使用Expression形狀中的以下語法指定標頭:

OutboundMessage(WCF.OutboundCustomHeaders) = "" +
  "<headers>"
  "<tns1:Header1 xmlns:tns1='http://tns1'>" +
  "</tns1:Header1>" +
  "<tns2:Header2 xmlns:tns2='http://tns2'>" +
  "</tns2:Header2>" +
  "</headers>" +
  "";

請注意,上面用於說明目的的自定義SOAP標頭<tns1:Header1>和<tns2:Header2>必須是WCF服務合同的一部分。 當為使用的WCF服務創建服務引用時,這些自定義SOAP標頭將在業務流程中用作生成的架構。

如何在自定義SOAP標頭中發送特定的上下文屬性

現在,您知道如何指定自定義SOAP標頭,您可以使用此語法將消息上下文中的特定屬性發送到自定義SOAP標頭,如下所示:

OutboundMessage(WCF.OutboundCustomHeaders) =
  System.String.Format(
    "" +
    "<headers>"
    "<tns1:Header1 xmlns:tns1='http://tns1'>" +
    "  <tns1:Property1>{0}</tns1:Property1>" +
    "  <tns1:Property2>{1}</tns1:Property2>" +
    "</tns1:Header1>" +
    "</headers>" +
    ""
  , InboundMessage(FILE.ReceivedFileName)
  , InboundMessage(BTS.MessageType)
  ));

在上面的示例中,已選擇兩個內置上下文屬性FILE.ReceivedFileName和BTS.MessageType並將其寫入自定義SOAP標頭中。 在現實世界中,您需要在使用屬性之前檢查屬性是否存在於上下文中。

您也可以使用任何自定義上下文屬性,只要已在適當的屬性模式中聲明了它們即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM