Angeben des Nachrichtentexts für die WCF-Adapter

Sie können die Registerkarte Nachrichten in den WCF-Adaptern verwenden, um anzugeben, wie der BizTalk-Nachrichtentext aus einer eingehenden SOAP-Nachricht extrahiert wird und wie der BizTalk-Nachrichtentext in einer ausgehenden SOAP-Nachricht platziert wird.

Angeben, wie der BizTalk-Nachrichtentext aus einer eingehenden SOAP-Nachricht extrahiert wird

Sie können steuern, wie der eingehende BizTalk-Nachrichtentext aus den über die WCF-Adapter eingehenden SOAP-Nachrichten erstellt wird. Die folgenden Abbildungen zeigen die Registerkarten Nachrichten des WCF-NetNamedPipe Empfangsadapters und des Sendeadapters als Beispiele.

Registerkarte

Registerkarte

Um anzugeben, wie der BizTalk-Nachrichtentext erstellt werden soll, wählen Sie in den vorherigen Abbildungen im Abschnitt Eingehender BizTalk-Nachrichtentext eine der folgenden Optionen aus:

  • Umschlag - ganze <Seife:Umschlag>. Verwendet das SOAP Envelope-Element einer eingehenden Nachricht, um den BizTalk-Nachrichtentextteil zu erstellen. Die gesamte eingehende Nachricht wird zum BizTalk-Nachrichtentext. Verwenden Sie diese Option, um den BizTalk-Nachrichtentext unter Einbeziehung aller Header zu erstellen.

    Hinweis

    Die SOAP-Header werden in den Nachrichtenkontext eingefügt, jedoch nicht automatisch heraufgestuft. Die Heraufstufung kann in einer benutzerdefinierten Pipelinekomponente ausgeführt werden.

  • Text : Inhalt des <Soap:Body-Elements>. Verwendet den Inhalt des SOAP-Body-Elements einer eingehenden Nachricht, um den BizTalk-Nachrichtentextteil zu erstellen. Wenn das Body-Element mehr als ein untergeordnetes Element aufweist, wird nur das erste Element zum BizTalk-Nachrichtentextteil.

  • Pfad: Inhalt, der sich nach Textpfad befindet. Verwendet den Textpfadausdruck im Textfeld Textpfadausdruck , um den BizTalk-Nachrichtentextteil zu erstellen. Der Textpfadausdruck wird anhand des unmittelbar untergeordneten Elements des SOAP-Body-Elements einer eingehenden Nachricht ausgewertet. Wenn eingehende Nachrichten Binärdaten enthalten, können Sie diese Option für den BizTalk-Nachrichtentext verwenden, damit nur die Binärdaten ohne Tags berücksichtigt werden.

    Wenn die Option Pfad – Inhalt nach Textpfad gefunden wird, kann die Node-Codierungseigenschaft so konfiguriert werden, dass der erwartete Codierungstyp für den Knoten angegeben wird, der durch den Textpfadausdruck im Textfeld Textpfadausdruck angegeben wird. Wenn der Textpfadausdruck mit mehreren Elementen übereinstimmt, wird nur das erste übereinstimmende Element verwendet.

Hinweis

Für die Textpfadausdruckseigenschaft werden nur die XPath-Ausdrücke unterstützt, die für die Vorwärtsverarbeitung von XML geeignet sind. Weitere Informationen zu den für diese Eigenschaft verfügbaren XPath-Ausdrücken finden Sie unter "Das Beste aus beiden Welten: Kombinieren von XPath mit dem XmlReader" unter https://go.microsoft.com/fwlink/?LinkID=75701.

Wenn die Option Pfad – Inhalt, der sich nach Textpfad befindet , ausgewählt ist und die Node-Codierungseigenschaft auf String festgelegt ist, erwarten die WCF-Adapter, dass der übereinstimmende Knoten UTF-8-codierte Zeichendaten enthält. Wenn die eingehenden Nachrichten Escapezeichendaten für die XML-Sonderzeichen wie < und >enthalten, stellen die WCF-Adapter die Escapezeichendaten beim Erstellen des BizTalk-Nachrichtentextteils wieder her. Wenn der übereinstimmene Knoten beispielsweise Escapezeichendaten wie <FirstName>CONTOSO</FirstName> enthält, erstellen <die WCF-Adapter FirstName>CONTOSO</FirstName> im eingehenden BizTalk-Nachrichtentext.

Wenn die Option Path -- content located by body path (Nach Textpfad gefundener Inhalt) ausgewählt ist und die Node-Codierungseigenschaft auf Hex oder Base64 festgelegt ist, kann der übereinstimmende Knoten über eine gültige BinHex - oder Base64-Sequenz verfügen. Wenn der übereinstimmene Knoten über eine ungültige Sequenz verfügt, empfängt der WCF-Client FaultException, eine Fehlermeldung wird im Ereignisprotokoll auf Ihrem BizTalk Server Computer protokolliert, und es wird keine Meldung angehalten.

Wenn die Option Pfad – Inhalt nach Textpfad gefunden und die Node-Codierungseigenschaft auf XML festgelegt ist, erstellen die WCF-Adapter den BizTalk-Nachrichtentext mit dem äußeren XML des Knotens, der durch den Textpfadausdruck im Textfeld Textpfadausdruck ausgewählt wird.

Wenn für den übereinstimmenden Knoten keine Daten codiert sind, wie in der Node-Codierungseigenschaft angegeben, wird ein leerer eingehender BizTalk-Nachrichtentext erstellt.

Angenommen, die WCF-Sendeadapter empfangen die folgende SOAP-Nachricht von WCF-Clients:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess/IOrderProcess/OrderRefresh</a:Action>
    <a:MessageID>urn:uuid:59e74507-66d0-4d50-be70-c3ec248b6f78</a:MessageID>
    <a:ReplyTo>
       <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">net.pipe://mycomputer/NetNamedPipeOrderProcessServiceBizTalk</a:To>
  </s:Header>
  <s:Body>
    <Order xmlns="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">
     <OrderDetail>
       <CustomerID>CONTOSO</CustomerID>
       <OrderID>00000000</OrderID>
     </OrderDetail>
    </Order>
  </s:Body>
</s:Envelope>

Wenn Sie den Inbound BizTalk-Nachrichtentext wie in der folgenden Tabelle dargestellt konfigurieren, wird die vorherige eingehende SOAP-Nachricht zum Eingehenden BizTalk-Nachrichtentextteil.

Nachrichtentext der eingehenden BizTalk-Nachricht Textpfadausdruck Knotencodierung
Umschlag -- ganze <Seife:Umschlag>

Wenn Sie den BizTalk-Nachrichtentextabschnitt wie in der folgenden Tabelle dargestellt konfigurieren, erstellen die WCF-Adapter den eingehenden BizTalk-Nachrichtentextteil, der nur das Order-Element in der vorherigen eingehenden SOAP-Nachricht enthält.

Nachrichtentext der eingehenden BizTalk-Nachricht Textpfadausdruck Knotencodierung
Text -- Inhalt von <soap:Body-Element>

Wenn Sie den BizTalk-Nachrichtentextabschnitt konfigurieren, wie in der folgenden Tabelle gezeigt, erwarten die WCF-Adapter, dass der eingehende Knoten, dem der Textpfadausdruck entspricht, UTF-8-codierte Zeichendaten enthält.

Nachrichtentext der eingehenden BizTalk-Nachricht Textpfadausdruck Knotencodierung
Pfad - Inhalt wird von Textpfad erkannt /*[local-name()='Order']/*[local-name()='OrderDetail']/*[local-name()='CustomerID'] String

Für die vorherige eingehende SOAP-Nachricht verwenden die WCF-Adapter die Zeichendaten CONTOSO des CustomerID-Elements , um den eingehenden BizTalk-Nachrichtentextteil zu erstellen.

Hinweis

Sie können die abgekürzte Syntax von XPath, /Order/OrderDetail/CustomerID, nicht für die vorherige eingehende SOAP-Nachricht verwenden. Dies liegt daran, dass die abgekürzte Syntax von XPath den Knoten zurückgibt, der nicht in einem Namespace deklariert ist, und das CustomerID-Element in der vorherigen SOAP-Nachricht wird standardmäßig im http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess Namespace deklariert.

Wenn Sie den BizTalk-Nachrichtentextabschnitt wie in der folgenden Tabelle dargestellt konfigurieren, sollte das CustomID-Element in der vorherigen eingehenden SOAP-Nachricht eine gültige BinHex - oder Base64-Sequenz aufweisen.

Nachrichtentext der eingehenden BizTalk-Nachricht Textpfadausdruck Knotencodierung
Pfad - Inhalt wird von Textpfad erkannt /*[local-name()='Order']/*[local-name()='OrderDetail']/*[local-name()='CustomerID'] Hexady oder Base64

Wenn Sie den BizTalk-Nachrichtentextabschnitt wie in der folgenden Tabelle dargestellt konfigurieren, erstellen die WCF-Adapter den eingehenden BizTalk-Nachrichtentext für die vorherige eingehende SOAP-Nachricht, wie im Code nach der Tabelle gezeigt.

Nachrichtentext der eingehenden BizTalk-Nachricht Textpfadausdruck Knotencodierung
Pfad - Inhalt wird von Textpfad erkannt /*[local-name()='Order']/*[local-name()='OrderDetail']/*[local-name()='CustomerID'] XML
<CustomerID xmlns="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">CONTOSO</CustomerID>

Angeben der Quelle des ausgehenden WCF-Nachrichtentexts

Sie können steuern, wie der ausgehende WCF-Nachrichtentext aus einem über die WCF-Adapter gesendeten BizTalk-Nachrichtentext erstellt wird. Um anzugeben, wie der BizTalk-Nachrichtentext im ausgehenden WCF-Nachrichtentext platziert wird, können Sie eine der folgenden Optionen im Abschnitt Ausgehenden WCF-Nachrichtentext auf der Registerkarte Nachrichten verwenden, wie in den Abbildungen im vorherigen Abschnitt gezeigt:

  • Text : Der Nachrichtentext der BizTalk-Antwort. Verwendet den BizTalk-Nachrichtentextteil, um den Inhalt des SOAP-Body-Elements für eine ausgehende Nachricht zu erstellen. Der Nachrichtentext der ausgehenden BizTalk-Nachricht wird zum Nachrichtentext der ausgehenden SOAP-Nachricht.

  • Vorlage: Inhalt, der von der Vorlage angegeben wird. Verwendet die im XML-Textfeld bereitgestellte Vorlage, um den Inhalt des SOAP-Body-Elements für eine ausgehende Nachricht zu erstellen. Die WCF-Adapter mit Text - BizTalk-Antworttext (Standardwert) lassen das Senden von Nicht-XML-Nachrichten wie Zeichendaten und Bitmapbildern nicht zu. Sie können die Option Vorlage – nach Vorlage angegebene Inhalte für die WCF-Adapter verwenden, um Nicht-XML-Nachrichten zu senden, die in base64, hexadezimal oder Zeichenfolge codiert sind.

    Wenn die Option Vorlage – durch Vorlage angegebene Inhalte ausgewählt ist, müssen Sie im Textfeld Ausgehender WCF-Nachrichtentext – XML ein beliebiges XML-Vorlagenelement angeben. Das XML-Vorlagenelement muss das folgende bts-msg-body-Element einmal und nur einmal enthalten, es sei denn, das XML-Element der Vorlage bleibt leer:

<bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2010" encoding="[base64|hex|string|xml]"/>

Die WCF-Adapter codieren den BizTalk-Nachrichtentext gemäß dem Codierungsattribut in der XML-Vorlage und ersetzen dann das bts-msg-body-Element durch den codierten BizTalk-Nachrichtentext, wenn ausgehende WCF-Nachrichten erstellt werden. Wenn das Textfeld Ausgehender WCF-Nachrichtentext – XML leer bleibt, codieren die WCF-Adapter den BizTalk-Nachrichtentext in Base64, und platzieren Sie dann die Base64-Sequenz im ausgehenden SOAP-Nachrichtentext.

Wenn das Codierungsattribut in der XML-Vorlage auf Zeichenfolge festgelegt ist, codieren die WCF-Adapter den BizTalk-Nachrichtentextteil als UTF-8-codierte Zeichendaten, in denen die XML-Sonderzeichen wie < und > mit Escapezeichen versehen werden.

Wenn das Codierungsattribut in der XML-Vorlage auf base64 oder hex festgelegt ist, codieren die WCF-Adapter den BizTalk-Nachrichtentextteil als BinHex - oder Base64-Sequenz .

Wenn das Codierungsattribut in der XML-Vorlage auf xml festgelegt ist, ersetzen die WCF-Adapter das bts-msg-body-Element durch den ausgehenden BizTalk-Nachrichtentext , um die ausgehende WCF-Nachricht zu erstellen.

Angenommen, die WCF-Adapter müssen den folgenden Nachrichtentextteil einer BizTalk-Nachricht an WCF-Clients senden:

<ns0:Order xmlns:ns0="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">
  <ns0:OrderDetail>
    <ns0:CustomerID>CONTOSO</ns0:CustomerID>
    <ns0:OrderID>01A2c</ns0:OrderID>
  </ns0:OrderDetail>
</ns0:Order>

Wenn Sie den Abschnitt Ausgehender WCF-Nachrichtentext konfigurieren, wie in der folgenden Tabelle gezeigt, erstellen die WCF-Adapter die ausgehenden WCF-Nachrichten, wie im Code nach der Tabelle gezeigt.

Nachrichtentext der ausgehenden WCF-Nachricht XML
Text - Text der BizTalk-Antwortnachricht
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess/IOrderProcess/Request</a:Action>
    <a:MessageID>urn:uuid:6a706a54-c4f5-4767-909d-a992c7c26dba</a:MessageID>
    <a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">net.pipe://mycomputer/NetNamedPipeOrderProcessService</a:To>
  </s:Header>
  <s:Body>
    <ns0:Order xmlns:ns0="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">
  <ns0:OrderDetail>
    <ns0:CustomerID>CONTOSO</ns0:CustomerID>
    <ns0:OrderID>01A2c</ns0:OrderID>
  </ns0:OrderDetail>
</ns0:Order>
  </s:Body>
</s:Envelope>

Wenn Sie den Abschnitt Ausgehender WCF-Nachrichtentext konfigurieren, wie in der folgenden Tabelle gezeigt, erstellen die WCF-Adapter die ausgehenden WCF-Nachrichten, wie im Code nach der Tabelle gezeigt.

Nachrichtentext der ausgehenden WCF-Nachricht XML
Text - Text der BizTalk-Antwortnachricht <Book><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2010" encoding="string"/></Book>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess/IOrderProcess/Request</a:Action>
    <a:MessageID>urn:uuid:05dde292-eedd-467e-b0d2-f1b8f0757410</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">net.pipe://mycomputer/NetNamedPipeOrderProcessService</a:To>
  </s:Header>
  <s:Body>
    <Book><ns0:Order xmlns:ns0="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">  <ns0:OrderDetail>    <ns0:CustomerID>CONTOSO</ns0:CustomerID>    <ns0:OrderID> 01A2c</ns0:OrderID>  </ns0:OrderDetail></ns0:Order>
    </Book>
  </s:Body>
</s:Envelope>

Wenn Sie den Abschnitt Ausgehender WCF-Nachrichtentext konfigurieren, wie in der folgenden Tabelle gezeigt, erstellen die WCF-Adapter die ausgehenden WCF-Nachrichten, wie im Code nach der Tabelle gezeigt.

Nachrichtentext der ausgehenden WCF-Nachricht XML
Text - Text der BizTalk-Antwortnachricht <Book><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2010" encoding="base64"/></Book>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://ww
w.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://Microsoft.Samples.BizTalk.NetNamedPipe
/OrderProcess/IOrderProcess/Request</a:Action>
    <a:MessageID>urn:uuid:cb3cac6d-a542-4a90-bad8-cdbfa8251112</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">net.pipe://mycomputer/NetNamedPipeOrderProcessSer
vice</a:To>
  </s:Header>
  <s:Body>
    <Book>77u/PG5zMDpPcmRlciB4bWxuczpuczA9Imh0dHA6Ly9NaWNyb3NvZnQuU2FtcGxlcy5CaX
pUYWxrLk5ldE5hbWVkUGlwZS9PcmRlclByb2Nlc3MiPg0KICA8bnMwOk9yZGVyRGV0YWlsPg0KICAgID
xuczA6Q3VzdG9tZXJJRD5DT05UT1NPPC9uczA6Q3VzdG9tZXJJRD4NCiAgICA8bnMwOk9yZGVySUQ+MD
FBMmM8L25zMDpPcmRlcklEPg0KICA8L25zMDpPcmRlckRldGFpbD4NCjwvbnMwOk9yZGVyPg==</Book
>
  </s:Body>
</s:Envelope>

Wenn Sie den Abschnitt Ausgehender WCF-Nachrichtentext konfigurieren, wie in der folgenden Tabelle gezeigt, erstellen die WCF-Adapter die ausgehenden WCF-Nachrichten, wie im Code nach der Tabelle gezeigt.

Nachrichtentext der ausgehenden WCF-Nachricht XML
Text - Text der BizTalk-Antwortnachricht <Book><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2010" encoding="xml"/></Book>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess/IOrderProcess/Request</a:A
ction>
    <a:MessageID>{513C123C-0600-4A1C-BEE2-EF83E0EFEB15}</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">net.pipe://mycomputer/NetNamedPipeOrderProcessServiceBizTalk</a:To>
  </s:Header>
  <s:Body>
    <Book>
      <ns0:Order xmlns:ns0="http://Microsoft.Samples.BizTalk.NetNamedPipe/OrderProcess">
  <ns0:OrderDetail>
    <ns0:CustomerID>CustomerID_0</ns0:CustomerID>
    <ns0:OrderID>OrderID_0</ns0:OrderID>
  </ns0:OrderDetail>
</ns0:Order>
    </Book>
  </s:Body>
</s:Envelope>