Obtener acceso a encabezados SOAP en orquestaciones
Puede obtener acceso a las propiedades de contexto de encabezados SOAP en orquestaciones para encabezados SOAP definidos y desconocidos. Para obtener más información sobre los esquemas de propiedades y las propiedades de contexto, vea Esquemas de propiedades.
Propiedades de contexto de encabezado SOAP definidas
Las propiedades de contexto de encabezado SOAP definidas en las orquestaciones requieren un esquema de propiedades. El esquema de propiedades debe tener el espacio de nombres http://schemas.microsoft.com/BizTalk/2003/SOAPHeader
de destino y la propiedad Property Schema Base establecida en MessageContextPropertyBase. Cada nombre de elemento raíz del esquema de propiedades debe coincidir con el nombre del elemento raíz del encabezado SOAP definido. A continuación, puede acceder a los valores de las propiedades de contexto mediante el espacio de nombres del esquema de propiedades y el nombre de la propiedad. El espacio de nombres del esquema de propiedades es diferente del espacio de nombres de destino indicado anteriormente. Aunque el espacio de nombres del esquema de propiedades puede ser cualquier cadena, normalmente el valor predeterminado es el nombre del proyecto.
En el ejemplo siguiente se muestra el acceso a la propiedad de contexto del encabezado SOAP para un espacio de nombres de esquema de propiedades, SOAPHeader y el nombre de propiedad OrigDest:
stringVar = requestMessageInstance(SOAPHeader.OrigDest);
Nota
Los encabezados SOAP definidos se tratan como encabezados "in" o "out". Si el asistente define el mismo encabezado SOAP para el mensaje de solicitud y de respuesta, el asistente no devolverá automáticamente el valor entrante en la respuesta. Debe copiar explícitamente la propiedad de contexto del encabezado SOAP del mensaje de solicitud en la propiedad de contexto del encabezado SOAP del mensaje de respuesta.
Copiar la propiedad de contexto del encabezado SOAP del mensaje entrante
Puede copiar la propiedad de contexto del encabezado SOAP de un mensaje entrante en la misma propiedad de contexto del encabezado SOAP del mensaje de respuesta.
El siguiente ejemplo muestra cómo copiar la propiedad de contexto del encabezado SOAP:
ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);
Cuando se crean encabezados SOAP para la respuesta SOAP, asegúrese de que crea los encabezados SOAP correctamente. El adaptador de SOAP no comprueba el contenido de las propiedades de contexto del encabezado SOAP. Si los valores de los encabezados SOAP de respuesta son incorrectos, el adaptador de SOAP no podrá enviar el mensaje de respuesta al consumidor del servicio Web.
Propiedad de contexto de encabezado SOAP desconocida
La propiedad de contexto de encabezado SOAP desconocida no requiere un esquema de propiedad. Puede acceder a esta propiedad de contexto global SOAP. UnknownHeaders.
En el ejemplo siguiente se muestra el acceso a la propiedad de contexto de encabezado SOAP desconocida SOAP. UnknownHeaders:
stringVar = RequestMessageInstance(SOAP.UnknownHeaders);
Los valores contenidos en las propiedades de contexto son cadenas que contienen datos XML. La manera más sencilla de acceder a estos datos es usar el Editor de expresiones de BizTalk en una forma de asignación de mensajes o expresión y cargar la cadena en un XmlDocument y usar consultas XPATH para acceder a campos específicos. Para obtener más información sobre cómo crear documentos XML en el Editor de expresiones de BizTalk, vea Lenguaje XLANG-s.
Las propiedades de contexto están asociadas con un mensaje concreto. El motor de mensajería no asigna automáticamente los valores de los encabezados SOAP conocidos del mensaje de solicitud al mensaje de respuesta. Al crear el mensaje de respuesta para un servicio web, debe establecer específicamente los valores del encabezado SOAP. El siguiente comando es el método más sencillo de establecer una propiedad de contexto de encabezado SOAP:
ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"
También puede lograrlo creando un XmlDocument y escribiendo el valor de cadena de XmlDocument en la propiedad de contexto.
Nota
Si el SOAP. La propiedad UnknownHeaders es null, BizTalk devuelve automáticamente los encabezados desconocidos recibidos en la solicitud SOAP a la respuesta SOAP. Si el SOAP. La propiedad de contexto UnknownHeaders del mensaje de respuesta no es null y BizTalk devuelve ese valor a la respuesta SOAP.