Configurar un puerto de envío WCF-WSHttp
Los puertos de de envío WCF-WSHttp pueden configurarse mediante programación, o bien utilizando la consola de administración de BizTalk.
Propiedades de configuración
El modelo de objetos del Explorador de BizTalk expone una interfaz específica del adaptador para los puertos de envío denominados ITransportInfo que tiene la propiedad de lectura y escritura TransportTypeData . Esta propiedad acepta una bolsa de propiedades de configuración de puerto de envío WCF-WSHttp con la forma de pareja nombre-valor de cadenas XML.
La propiedad TransportTypeData de la interfaz ITransportInfo no es necesaria. Si no se establece, el adaptador usa los valores predeterminados para la configuración del puerto de envío WCF-WSHttp, como se indica en la siguiente tabla.
En la tabla siguiente se enumeran las propiedades de configuración que pueden establecerse en el modelo de objetos para el Explorador de BizTalk para los puertos de envío WCF-WSHttp.
Nombre de propiedad | Tipo | Descripción |
---|---|---|
Identidad | Blob XML, por ejemplo:<identity> <userPrincipalName value="username@contoso.com"> </identity> |
Especifique la identidad de servicio que espera este puerto de envío. Esta configuración permite al puerto de envío autenticar el servicio. En el proceso de negociación entre el cliente y el servicio, la infraestructura de Windows Communication Foundation (WCF) asegurará que la identidad del servicio esperado coincide con los valores de este elemento. El valor predeterminado es una cadena vacía. |
StaticAction | -Cadena | Especifique el campo de encabezado HTTP SOAPAction para los mensajes salientes. Esta propiedad también se puede establecer a través de la propiedad de contexto del mensaje WCF. Acción en una canalización o orquestación. Puede especificar este valor de dos maneras diferentes: el formato de acción única y el formato de asignación de acciones. Si establece esta propiedad en el formato de acción única, por ejemplo, http://contoso.com/Svc/Op1 , el encabezado SOAPAction para los mensajes salientes siempre se establece en el valor especificado en esta propiedad.Si establece esta propiedad en el formato de asignación de acciones, el encabezado SOAPAction saliente viene determinado por BTS. Propiedad de contexto de la operación . Por ejemplo, si esta propiedad se establece en el siguiente formato XML y BTS. La propiedad Operation se establece en Op1, el adaptador de envío de WCF usa http://contoso.com/Svc/Op1 para el encabezado SOAPAction saliente. <BtsActionMapping> <Operation Name="Op1" Action="http://contoso.com/Svc/Op1>"> <Operation Name="Op2" Action="http://contoso.com/Svc/Op2"/> </BtsActionMapping> Si los mensajes salientes proceden de un puerto de orquestación, las instancias de orquestación establecen dinámicamente el BTS. Propiedad Operation con el nombre de la operación del puerto. Si los mensajes salientes se enrutan con enrutamiento basado en contenido, puede establecer bts. Propiedad Operation en los componentes de canalización. El valor predeterminado es una cadena vacía. |
OpenTimeout | System.TimeSpan | Especificar un valor de marco temporal que indica el intervalo de tiempo proporcionado para que se complete una operación de apertura del canal. Valor predeterminado: 00:01:00 |
SendTimeout | System.TimeSpan | Especificar un valor de marco temporal que indica el intervalo de tiempo proporcionado para que se complete una operación de envío. Si usa un puerto de envío de petición-respuesta, este valor especifica un marco temporal para que se complete la interacción, incluso cuando el servicio devuelva un mensaje grande. Valor predeterminado: 00:01:00 |
CloseTimeout | System.TimeSpan | Especificar un valor de marco temporal que indica el intervalo de tiempo proporcionado para que se complete una operación de cierre del canal. Valor predeterminado: 00:01:00 |
MaxReceivedMessageSize | Entero | Especificar el tamaño máximo, en bytes, para mensajes (con encabezados incluidos) que se pueden recibir a través de la red. El tamaño de los mensajes se limita mediante la cantidad de memoria asignada a cada mensaje. Puede usar esta propiedad para limitar la exposición a ataques por denegación de servicio (DoS). Valor predeterminado: 65536 |
MessageEncoding | Enumeración - Texto : use un codificador de mensajes de texto. - Mtom : use un codificador de la organización de transmisión de mensajes 1.0 (MTOM). |
Especificar el codificador que se usa para codificar el mensaje SOAP. Valor predeterminado: Texto |
TextEncoding | Enumeración - unicodeFFF : codificación BigEndian unicode. - utf-16 : codificación de 16 bits. - utf-8 : codificación de 8 bits. |
Especifique la codificación del juego de caracteres que se usará para emitir mensajes en el enlace cuando la propiedad MessageEncoding esté establecida en Text. Valor predeterminado: utf-8 |
EnableTransaction | Boolean | Especifique si un mensaje se transmite al servicio de destino y se elimina de la base de datos messageBox en un contexto transaccional mediante el protocolo WS-AtomicTransaction . Valor predeterminado: False |
SecurityMode | Enumeración - Ninguno - Mensaje - Transporte - TransportWithMessageCredential Para obtener más información sobre los nombres de miembro de la propiedad SecurityMode , vea la propiedad Modo de seguridad en el cuadro de diálogo Propiedades de transporte WCF-WSHttp, pestaña Enviar, Seguridad en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores. |
Especificar el tipo de seguridad que se usa. Valor predeterminado: Ninguno |
TransportClientCredentialType | Enumeración - Ninguno - Básica - Windows - Certificado - Digerir - Ntlm Para obtener más información sobre los nombres de miembro de la propiedad TransportClientCredentialType , vea la propiedad Tipo de credencial de cliente de transporte en el cuadro de diálogo Propiedades de transporte WCF-WSHttp, Enviar, seguridad de la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores. |
Especificar el tipo de credenciales que se va a usar a la hora de realizar la autenticación del puerto de envío. Valor predeterminado: Ninguno |
MessageClientCredentialType | Enumeración - Ninguno - Windows - Nombre de usuario - Certificado Para obtener más información sobre los nombres de miembro de la propiedad MessageClientCredentialType , vea la propiedad Tipo de credencial de cliente de mensaje en el cuadro de diálogo Propiedades de transporte WCF-WSHttp, Enviar, seguridad de la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores. |
Especificar el tipo de credenciales que se va a usar a la hora de realizar la autenticación de cliente mediante la seguridad basada en mensajes. Valor predeterminado: UserName |
AlgorithmSuite | Enumeración Para obtener más información sobre los nombres de miembro de la propiedad AlgorithmSuite , vea la propiedad Conjunto de algoritmos en el cuadro de diálogo Propiedades de transporte WCF-WSHttp, pestaña Enviar, Seguridad en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores. |
Especificar el cifrado de mensajes y los algoritmos de encapsulado de claves. Estos algoritmos se asignan a los que se indican en la especificación Security Policy Language (WS-SecurityPolicy). Valor predeterminado: Basic256 |
NegotiateServiceCredential | Boolean Para obtener más información sobre los nombres de miembro de la propiedad NegotiateServiceCredential , vea la propiedad Negotiate service credential en el cuadro de diálogo Propiedades de transporte WCF-WSHttp, la pestaña Enviar, Seguridad en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores. |
Especificar si la credencial de servicio se suministra en este puerto de envío fuera de banda o se obtiene del servicio en este puerto de envío a través de un proceso de negociación. Este tipo de negociación es un precursor del intercambio de mensajes usual. Valor predeterminado: False |
EnableSecurityContext | Boolean | Especifique si se establece un token de contexto de seguridad a través de un intercambio WS-SecureConversation entre este puerto de envío y el servicio. Si esta propiedad se establece en True , el servicio de destino debe admitir WS-SecureConversation. Valor predeterminado: True |
ClientCertificate | String | Especificar la huella digital del certificado X.509 para la autenticación de este puerto de envío en servicios. Esta propiedad es necesaria si la propiedad ClientCredentialsType está establecida en Certificate. El certificado que se va a usar para esta propiedad debe instalarse en mi almacén en la ubicación Usuario actual . El valor predeterminado es una cadena vacía. |
ServiceCertificate | String | Especificar la huella digital del certificado X.509 para la autenticación del servicio al que este puerto de envío envía mensajes. El certificado que se va a usar para esta propiedad debe instalarse en el almacén Other Personas en la ubicación del equipo local. El valor predeterminado es una cadena vacía. |
AffiliateApplicationName | String | Especificar la aplicación afiliada que se utilizará para el inicio de sesión único empresarial (SSO). El valor predeterminado es una cadena vacía. |
UseSSO | Boolean | Especificar si se utiliza el inicio de sesión único (SSO) para recuperar credenciales de cliente para la autenticación con el servidor de destino. Valor predeterminado: False |
UserName | String | Especifique el nombre de usuario que se usará para la autenticación con el servidor de destino cuando la propiedad UseSSO esté establecida en False. No tiene que usar el formato dominio\usuario para esta propiedad. El valor predeterminado es una cadena vacía. |
Contraseña | String | Especifique la contraseña que se usará para la autenticación con el servidor de destino cuando la propiedad UseSSO esté establecida en False. El valor predeterminado es una cadena vacía. |
ProxyToUse | Enumeración - Ninguno : no use un servidor proxy para este puerto de envío. - Valor predeterminado : use la configuración de proxy en el controlador de envío que hospeda este puerto de envío. - UserSpecified : use el servidor proxy especificado en la propiedad ProxyAddress . |
Especificar el servidor de proxy que se va a utilizar para el tráfico HTTP saliente. Valor predeterminado: None |
ProxyAddress | String | Especifique la dirección del servidor proxy. Use el esquema https o http en función de la configuración de seguridad. Esta dirección se puede seguir por dos puntos y el número de puerto, por ejemplo, http://127.0.0.1:8080 . El valor predeterminado es una cadena vacía. |
ProxyUserName | String | Especificar el nombre de usuario que se utilizará para el proxy. El adaptador de WCF-WSHttp aprovecha WSHttpBinding en el modo de transferencia almacenada en búfer para comunicarse con un punto de conexión. Las credenciales de proxy de WSHttpBinding solo se aplican cuando el modo de seguridad es Transporte o Ninguno. Si establece la propiedad SecurityMode en Message o TransportWithMessageCredential, el adaptador de WCF-WSHttp no usa la credencial especificada en las propiedades ProxyUserName y ProxyPassword para la autenticación en el proxy. Nota: El adaptador de envío WCF-WSHttp usa la autenticación básica para el proxy. El valor predeterminado es una cadena vacía. |
ProxyPassword | String | Especificar la contraseña que se utilizará para el proxy. El valor predeterminado es una cadena vacía. |
OutboundBodyLocation | Enumeración - UseBodyElement : use la parte del cuerpo del mensaje de BizTalk para crear el contenido del elemento Cuerpo SOAP para un mensaje saliente. - UseTemplate : use la plantilla proporcionada en la propiedad OutboundXMLTemplate para crear el contenido del elemento Cuerpo soap para un mensaje saliente. Para obtener más información sobre cómo usar la propiedad OutboundBodyLocation , vea Especificar el cuerpo del mensaje para los adaptadores WCF. |
Especifique la selección de datos para el elemento Body SOAP de los mensajes WCF salientes. Valor predeterminado: UseBodyElement |
OutboundXMLTemplate | String Para obtener más información sobre cómo usar la propiedad OutboundXMLTemplate , vea Especificar el cuerpo del mensaje para los adaptadores de WCF. |
Especifique la plantilla con formato XML para el contenido del elemento Cuerpo SOAP de un mensaje saliente. Esta propiedad es necesaria si la propiedad OutboundBodyLocation está establecida en UseTemplate. El valor predeterminado es una cadena vacía. |
InboundBodyLocation | Enumeración - UseBodyElement : use el contenido del elemento Cuerpo SOAP de un mensaje entrante para crear la parte del cuerpo del mensaje de BizTalk. Si el elemento Body tiene más de un elemento secundario, solo el primer elemento se convierte en la parte del cuerpo del mensaje de BizTalk. Esta propiedad sólo es válida para puertos de petición-respuesta. - UseEnvelope : cree la parte del cuerpo del mensaje de BizTalk a partir del sobre SOAP completo de un mensaje entrante. - UseBodyPath : use la expresión de ruta de acceso del cuerpo en la propiedad InboundBodyPathExpression para crear la parte del cuerpo del mensaje de BizTalk. La expresión de ruta de acceso del cuerpo se evalúa con el elemento secundario inmediato del elemento Cuerpo SOAP de un mensaje entrante. Esta propiedad sólo es válida para puertos de petición-respuesta. Para obtener más información sobre cómo usar la propiedad InboundBodyLocation , vea Especificar el cuerpo del mensaje para los adaptadores WCF. |
Especifique la selección de datos para el elemento Body SOAP de los mensajes WCF entrantes. Valor predeterminado: UseBodyElement |
InboundBodyPathExpression | String Para obtener más información sobre cómo usar la propiedad InboundBodyPathExpression , vea Esquema de propiedades y propiedades de adaptadores de WCF. |
Especificar la expresión de ruta de cuerpo para identificar una parte específica de un mensaje entrante utilizada para crear la parte del cuerpo del mensaje de BizTalk. Esta expresión de ruta de acceso del cuerpo se evalúa con el elemento secundario inmediato del nodo Cuerpo SOAP de un mensaje entrante. Si esta expresión de ruta de cuerpo devuelve varios nodos, solo se elegirá el primero de ellos para la parte del cuerpo del mensaje de BizTalk. Esta propiedad es necesaria si la propiedad InboundBodyLocation está establecida en UseBodyPath. Esta propiedad sólo es válida para puertos de petición-respuesta. El valor predeterminado es una cadena vacía. |
InboundNodeEncoding | Enumeración - Base64 : codificación base64. - Hexadecimal : codificación hexadecimal. - Cadena : codificación de texto- UTF-8. - XML : los adaptadores de WCF crean el cuerpo del mensaje de BizTalk con el XML externo del nodo seleccionado por la expresión de ruta de acceso del cuerpo en InboundBodyPathExpression. |
Especifique el tipo de codificación que usa el adaptador de envío WCF-WSHttp para descodificar el nodo identificado por la ruta de acceso del cuerpo especificada en InboundBodyPathExpression. Esta propiedad es necesaria si la propiedad InboundBodyLocation está establecida en UseBodyPath. Esta propiedad sólo es válida para puertos de petición-respuesta. Valor predeterminado: XML |
PropagateFaultMessage | Boolean - True: enrute el mensaje que produce un error en el procesamiento saliente a una aplicación de suscripción (por ejemplo, otro puerto de recepción o programación de orquestación). - False : suspende los mensajes con errores y genera una confirmación negativa (NACK). |
Especificar si se enrutan o se suspenden mensajes que han generado errores en el procesamiento de salida. Esta propiedad sólo es válida para puertos de petición-respuesta. Valor predeterminado: True |
Configurar un puerto de envío de WCF-WSHttp con la consola de administración de BizTalk
Se pueden establecer variables del adaptador de puerto de envío WCF-WSHttp en la consola de administración de BizTalk. Si no se establecen las propiedades del puerto de envío, se usan los valores predeterminados de la configuración del puerto de envío WCF-WSHttp, como se indica en la tabla anterior.
Configuración de variables para un puerto de envío de WCF-WSHttp
En la consola de administración de BizTalk, cree un nuevo puerto de envío o haga doble clic en un puerto de envío existente para modificarlo. Para obtener más información, vea Cómo crear un puerto de envío. Configure todas las opciones de puerto de envío y especifique WCF-WSHttp para la opción Tipo en la sección Transporte de la pestaña General .
En la pestaña General , en la sección Transporte , haga clic en el botón Configurar situado junto a Tipo.
En el cuadro de diálogo Propiedades de transporte WCF-WSHttp , en la pestaña General , configure la dirección del punto de conexión, la identidad del servicio y el encabezado HTTP SOAPAction para el puerto de envío de WCF-WSHttp. Para obtener más información sobre la pestaña General en el cuadro de diálogo Propiedades de transporte WCF-WSHttp , vea el cuadro de diálogo Propiedades de transporte WCF-WSHttp, Enviar, general en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.
En el cuadro de diálogo Propiedades de transporte WCF-WSHttp , en la pestaña Enlace , configure las propiedades de tiempo de espera, codificación y transacción. Para obtener más información sobre la pestaña Enlace del cuadro de diálogo Propiedades de transporte WCF-WSHttp , vea el cuadro de diálogo Propiedades de transporte WCF-WSHttp, la pestaña Enviar, Enlace en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.
En el cuadro de diálogo Propiedades de transporte WCF-WSHttp , en la pestaña Seguridad , defina las funcionalidades de seguridad del puerto de envío de WCF-WSHttp. Para obtener más información sobre la pestaña Seguridad del cuadro de diálogo Propiedades de transporte WCF-WSHttp , vea el cuadro de diálogo Propiedades de transporte WCF-WSHttp, la pestaña Enviar, Seguridad en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.
En el cuadro de diálogo Propiedades de transporte WCF-WSHttp , en la pestaña Proxy , configure el valor de proxy para el puerto de envío de WCF-WSHttp. Para obtener más información sobre la pestaña Proxy en el cuadro de diálogo Propiedades de transporte WCF-WSHttp , vea el cuadro de diálogo Propiedades de transporte WCF-WSHttp, enviar, pestaña Proxy en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores.
En el cuadro de diálogo Propiedades de transporte WCF-WSHttp , en la pestaña Mensajes , especifique la selección de datos para el elemento Cuerpo SOAP. Para obtener más información sobre la pestaña Mensajes del cuadro de diálogo Propiedades de transporte WCF-WSHttp , vea el cuadro de diálogo Propiedades de transporte WCF-WSHttp, la pestaña Enviar, Mensajes en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.
Configurar un puerto de envío de WCF-WSHttp mediante programación
Puede usar el siguiente formato para establecer las propiedades:
<CustomProps>
<ServiceCertificate vt="8" />
<UseSSO vt="11">0</UseSSO>
<InboundBodyPathExpression vt="8" />
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<Identity vt="8" />
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<TextEncoding vt="8">utf-8</TextEncoding>
<NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<ClientCertificate vt="8" />
<ProxyUserName vt="8" />
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<ProxyToUse vt="8">Default</ProxyToUse>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
<StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
<PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
<ProxyAddress vt="8" />
<MessageEncoding vt="8">Text</MessageEncoding>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
El siguiente fragmento de código muestra la creación de un puerto de envío WCF-WSHttp:
// Use BizTalk Explorer object model to create new WCF-WSHttp send port.
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>
<MessageEncoding vt=""8"">Text</MessageEncoding>
<TextEncoding vt=""8"">utf-8</TextEncoding>
<OpenTimeout vt=""8"">00:01:00</OpenTimeout>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new static one-way send port
SendPort sendPort = application.AddNewSendPort(false, false);
sendPort.Name = "SampleSendPort";
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-WSHttp"];
sendPort.PrimaryTransport.Address = "http://mycomputer/samplepath";
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Save
explorer.SaveChanges();
Consulte también
Esquema de propiedades y propiedades de adaptadores de WCFque configuran el adaptador de WCF-WSHttpespecificando el cuerpo del mensaje para los adaptadores de WCF instalandocertificados para los adaptadores de WCFconfigurando puertos de envío dinámicos mediante las propiedades de contexto de adaptadores de WCF