Zugreifen auf SOAP-Header in Orchestrierungen
Die können auf die SOAP-Headerkontexteigenschaften in Orchestrierungen für definierte und unbekannte SOAP-Header zugreifen. Weitere Informationen zu Eigenschaftenschemas und Kontexteigenschaften finden Sie unter Eigenschaftenschemas.
Definierte SOAP-Headerkontexteigenschaften
Die definierten SOAP-Headerkontexteigenschaften in Orchestrierungen erfordern ein Eigenschaftenschema. Das Eigenschaftenschema muss den Zielnamespace http://schemas.microsoft.com/BizTalk/2003/SOAPHeader
und die Eigenschaft Property Schema Base auf MessageContextPropertyBase festgelegt sein. Jeder Stammelementname im Eigenschaftenschema muss mit dem Stammelementnamen des definierten SOAP-Headers übereinstimmen. Anschließend können Sie mithilfe des Namespace des Eigenschaftenschemas und des Eigenschaftennamens auf die Werte der Kontexteigenschaften zugreifen. Der Namespace des Eigenschaftenschemas unterscheidet sich vom oben aufgeführten Zielnamespace. Obwohl der Namespace des Eigenschaftenschemas eine beliebige Zeichenfolge sein kann, wird in der Regel standardmäßig der Name des Projekts verwendet.
Das folgende Beispiel zeigt den Zugriff auf die SOAP-Headerkontexteigenschaft für den Eigenschaftenschemanamespace SOAPHeader und den Eigenschaftennamen OrigDest:
stringVar = requestMessageInstance(SOAPHeader.OrigDest);
Hinweis
Definierte SOAP-Header werden als Header vom Typ „in“ oder „out“ behandelt. Wenn der Assistent den gleichen SOAP-Header für die Anforderungs- und Antwortnachricht definiert, gibt er nicht automatisch den eingehenden Wert in der Antwort zurück. Sie müssen die SOAP-Headerkontexteigenschaft der Anforderungsnachricht explizit in die SOAP-Headerkontexteigenschaft der Antwortnachricht kopieren.
Kopieren der SOAP-Headerkontexteigenschaft einer eingehenden Nachricht
Sie können die SOAP-Headerkontexteigenschaft einer eingehenden Nachricht in die gleiche SOAP-Headerkontexteigenschaft der Antwortnachricht kopieren.
Das folgende Beispiel zeigt, wie die SOAP-Headerkontexteigenschaft kopiert wird:
ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);
Wenn Sie SOAP-Header für die SOAP-Antwort erstellen, müssen Sie die ordnungsgemäße Erstellung der SOAP-Header sicherstellen. Der SOAP-Adapter überprüft den Inhalt der SOAP-Headerkontexteigenschaften nicht. Wenn die Werte der SOAP-Antwortheader falsch sind, kann der SOAP-Adapter die Antwortnachricht nicht an den Consumer Ihres Webdiensts senden.
Unbekannte SOAP-Headerkontexteigenschaften
Für die unbekannte SOAP-Headerkontexteigenschaft ist kein Eigenschaftenschema erforderlich. Sie können auf diese globale Kontexteigenschaft SOAP zugreifen. UnknownHeaders.
Das folgende Beispiel zeigt den Zugriff auf die unbekannte SOAP-Headerkontexteigenschaft SOAP. UnknownHeaders:
stringVar = RequestMessageInstance(SOAP.UnknownHeaders);
Die Werte, die in den Kontexteigenschaften enthalten sind, enthalten XML-Daten. Die einfachste Möglichkeit, auf diese Daten zuzugreifen, besteht darin, den BizTalk-Ausdrucks-Editor in einer Nachrichtenzuweisungs- oder Ausdrucksform zu verwenden, die Zeichenfolge in ein XmlDocument zu laden und XPATH-Abfragen für den Zugriff auf bestimmte Felder zu verwenden. Weitere Informationen zum Erstellen von XML-Dokumenten im BizTalk-Ausdrucks-Editor finden Sie unter XLANG-s Language.
Kontexteigenschaften werden einer bestimmten Nachricht zugeordnet. Die Messaging-Engine zuordnen die Werte bekannter SOAP-Header aus der Anforderungsnachricht nicht automatisch der Antwortnachricht. Beim Erstellen der Antwortnachricht für einen Webdienst müssen Sie speziell die SOAP-Headerwerte festlegen. Der folgende Befehl ist die einfachste Methode zum Festlegen einer Kontexteigenschaft für den SOAP-Header:
ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"
Sie können dies auch erreichen, indem Sie ein XmlDocument erstellen und den Zeichenfolgenwert des XmlDocument in die Kontexteigenschaft schreiben.
Hinweis
If the SOAP. Die UnknownHeaders-Eigenschaft ist NULL, BizTalk gibt die in der SOAP-Anforderung empfangenen unbekannten Header automatisch an die SOAP-Antwort zurück. If the SOAP. Die UnknownHeaders-Kontexteigenschaft für die Antwortnachricht ist nicht NULL, und BizTalk gibt diesen Wert an die SOAP-Antwort zurück.