Configurar un puerto de envío de WCF-NetTcp
Los puertos de envío WCF-NetTcp 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 tienen la propiedad de lectura y escritura TransportTypeData . Esta propiedad acepta una bolsa de propiedades de configuración de puerto de envío WCF-NetTcp con la forma de par 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-NetTcp, como se indica en la siguiente tabla.
En la tabla siguiente se enumeran las propiedades de configuración que pueden definirse en el Modelo de objetos para el Explorador de BizTalk para los puertos de envío WCF-NetTcp.
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 | String | Especifique el campo de encabezado SOAPAction para los mensajes salientes. Esta propiedad también se puede establecer a través de la propiedad de contexto de 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 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 el BTS. Propiedad Operation en 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). El adaptador de WCF-NetTcp aprovecha la clase NetTcpBinding en el modo de transferencia almacenada en búfer para comunicarse con un punto de conexión. Para el modo de transporte almacenado en búfer, la propiedad NetTcpBinding.MaxBufferSize siempre es igual al valor de esta propiedad. Valor predeterminado: 65536 |
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 de transacción especificado en la propiedad TransactionProtocol . Valor predeterminado: False |
TransactionProtocol | Enumeración - OleTransaction - WS-AtomicTransaction |
Especificar el protocolo de transacción que se usará con este enlace. Valor predeterminado: OleTransaction |
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-NetTcp, Pestaña Enviar, Seguridad en la referencia de espacio de nombres de api de desarrolladores y guía de interfaz de usuario. |
Especificar el tipo de seguridad que se usa. Valor predeterminado: Transporte |
TransportClientCredentialType | Enumeración - Ninguno - Windows - Certificado 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-NetTcp, Enviar, Pestaña Seguridad en la guía de interfaz de usuario y referencia del espacio de nombres de 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: Windows |
TransportProtectionLevel | Enumeración - Ninguno : sin protección. - Firmar : los mensajes están firmados. - EncryptAndSign : los mensajes se cifran y firman. |
Especificar la seguridad en el nivel de transporte TCP. Si se firman los mensajes, se reduce el riesgo de que manipulen el mensaje terceros mientras éste se transfiere. El cifrado proporciona privacidad de nivel de datos durante el transporte. Valor predeterminado: EncryptAndSign |
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-NetTcp, Pestaña Enviar, Seguridad en la guía de interfaz de usuario y referencia del espacio de nombres de api para 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: Windows |
AlgorithmSuite | Enumeración Para obtener más información sobre los nombres de miembro de la propiedad AlgorithmSuite , vea la propiedad Algorithm suite en el cuadro de diálogo Propiedades de transporte WCF-NetTcp, pestaña Enviar, Seguridad en la guía de la interfaz de usuario y la referencia del espacio de nombres de api para 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 |
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 el almacén Mi en la ubicación Usuario actual . 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. |
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 de WCF. |
Especifique la selección de datos para el elemento Cuerpo 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 respecto al elemento secundario inmediato del elemento Body 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 de WCF. |
Especifique la selección de datos para el elemento Cuerpo 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 - XML - 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 de WCF-NetTcp para descodificar el nodo identificado por el XPath especificado 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 |
Cómo configurar un puerto de envío WCF-NetTcp con la consola de administración de BizTalk.
Se pueden establecer variables del adaptador de puerto de envío WCF-NetTcp 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-NetTcp, como se indica en la tabla anterior.
Configuración de variables para un puerto de envío de WCF-NetTcp
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-NetTcp 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 de WCF-NetTcp , en la pestaña General , configure la dirección del punto de conexión, la identidad del servicio y el encabezado SOAPAction para el puerto de envío de WCF-NetTcp. Para obtener más información sobre la pestaña General del cuadro de diálogo Propiedades de transporte de WCF-NetTcp , vea el cuadro de diálogo Propiedades de transporte wcF-NetTcp, Enviar, pestaña General 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 de WCF-NetTcp , en la pestaña Enlace , configure las propiedades de tiempo de espera y transacción. Para obtener más información sobre la pestaña Enlace del cuadro de diálogo Propiedades de transporte de WCF-NetTcp , vea el cuadro de diálogo Propiedades de transporte WCF-NetTcp, 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 de WCF-NetTcp , en la pestaña Seguridad , defina las funcionalidades de seguridad del puerto de envío de WCF-NetTcp. Para obtener más información sobre la pestaña Seguridad del cuadro de diálogo Propiedades de transporte de WCF-NetTcp , vea el cuadro de diálogo Propiedades de transporte WCF-NetTcp, 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.
En el cuadro de diálogo Propiedades de transporte de WCF-NetTcp , 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-NetTcp , vea el cuadro de diálogo Propiedades de transporte WCF-NetTcp, 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-NetTcp mediante programación
Puede usar el siguiente formato para establecer las propiedades:
<CustomProps>
<UseSSO vt="11">0</UseSSO>
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<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>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Transport</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<ClientCertificate vt="8" />
<TransactionProtocol vt="8">OleTransactions</TransactionProtocol>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
<TransportProtectionLevel vt="8">EncryptAndSign</TransportProtectionLevel>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
El siguiente fragmento de código muestra la creación de un puerto de envío WCF-NetTcp:
// Use BizTalk Explorer object model to create new WCF-NetTcp 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>
<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-NetTcp"];
sendPort.PrimaryTransport.Address = "net.tcp://mycomputer/private/samplequeue";
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 WCFEspecificando el cuerpo del mensaje para los adaptadores de WCFInstalando certificados para los adaptadores de WCFconfigurando el adaptador de WCF-NetTcpconfigurando puertos de envío dinámicos mediante las propiedades de contexto de adaptadores de WCF