2010-11-19 82 views
0

Lors de l'utilisation de l'adaptateur WCF, la partie du corps du message est envoyée en tant que corps du message WCF, mais puis-je faire pour que le contexte du message Biztalk soit également envoyé (espérons-le l'en-tête du message WCF)?Envoyer un contexte de message Biztalk au service WCF

Répondre

2

Le following page in MSDN explique succinctement comment vous pouvez utiliser des en-têtes SOAP personnalisés lors de l'envoi de messages en dehors de BizTalk avec les adaptateurs WCF.

Fondamentalement, vous ne pouvez pas directement envoyer le contexte de vos messages BizTalk en dehors de BizTalk. Ce serait sans signification. Au lieu de cela, vous pouvez sélectionner un sous-ensemble des propriétés dans le contexte de vos messages BizTalk à envoyer à l'adaptateur WCF via des en-têtes SOAP personnalisés.

Manipulation personnalisée SOAP têtes sortant WCF Demande

têtes SOAP associés à une requête sortante doit être explicitement écrit dans le contexte du message sortant. Lors de l'utilisation des adaptateurs WCF, les en-têtes SOAP sont définis avec la propriété de contexte intégrée WCF.OutboundCustomHeaders. Cette propriété contient tous les en-têtes SOAP personnalisés, enveloppés à l'intérieur d'un autre < en-têtes >.

en-têtes peuvent être spécifiées à partir d'une orchestration avec la syntaxe suivante dans une forme d'expression:

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

S'il vous plaît, notez que les en-têtes SOAP personnalisé < de TNS1: Header1 > et < tns2: Header2 > utilisé à titre d'illustration Les objectifs ci-dessus doivent faire partie de votre contrat de service WCF. Lorsque vous créez une référence de service pour le service WCF consommé, ces en-têtes SOAP personnalisés sont disponibles en tant que schémas générés dans votre orchestration.

Comment envoyer des propriétés de contexte spécifique en-tête personnalisé SOAP

Maintenant que vous savez comment spécifier en-têtes SOAP personnalisé, vous pouvez utiliser cette syntaxe pour envoyer des propriétés spécifiques du contexte de vos messages SOAP personnalisé têtes comme si:

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) 
)); 

Dans l'exemple ci-dessus, les deux propriétés de contexte BUILTIN FILE.ReceivedFileName et BTS.MessageType ont été sélectionnés et écrit dans l'en-tête SOAP personnalisé. Dans un scénario réel, vous voudrez vérifier si les propriétés existent dans le contexte avant de les utiliser.

Vous pouvez également utiliser n'importe quelle propriété de contexte personnalisée, à condition qu'elle ait été déclarée dans un schéma de propriété approprié.

+0

Ceci n'est pas vrai. Le message Biztalk est le résultat du traitement d'un fichier EDI multi-enregistrement. Chaque enregistrement est désassemblé en messages BizTalk individuels. Les informations d'en-tête EDI sont transformées en propriétés de contexte dans chaque message BizTalk. Donc, cette information n'a pas de sens. – Rich

+0

Eh bien, comme je l'ai dit, il est vide de sens * à l'extérieur * BizTalk. Ce dont vous avez vraiment besoin, c'est de * transformer * ou * adapter * (certaines des) propriétés dans le contexte de vos messages BizTalk en en-têtes personnalisés de WCF. Ces en-têtes de savon doivent faire partie du contrat avec le service externe. S'il vous plaît, jetez un oeil à la page à laquelle je me suis connecté. Si vous avez besoin d'un aperçu de base des différences dans la gestion des en-têtes de savon entre le WCF et les adaptateurs SOAP, s'il vous plaît jeter un oeil à mon blog: http://maximelabelle.wordpress.com/2010/09/16/handling-soap-headers -in-biztalk-wcf-services / –