Compartir a través de


Cómo configurar un puerto de envío WCF-NetMsmq

Los puertos de de envío WCF-NetMsmq 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-NetMsmq 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-NetMsmq, 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-NetMsmq.

Nombre de propiedad Tipo Descripción
Identidad Blob XML

Ejemplo:

<identity>

<userPrincipalName value="username@contoso.com" />

</Identidad>
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 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
EnableTransactional Boolean Especifique el tipo de la cola de mensajes para el servicio de destino: transaccional o no transaccional. Si esta propiedad se establece en True, cada mensaje procesado por este puerto de envío se entrega solo una vez y se notifica al remitente los errores de entrega. Para enviar mensajes a través de puertos de envío transaccionales, los elementos de enlace durables y exactlyOnce del servicio deben establecerse en True. Si esta propiedad se establece en False, los mensajes se transfieren sin garantía de entrega.

Valor predeterminado: True
DeadLetterQueue Enumeración

- Ninguno : no se usará ninguna cola de mensajes fallidos.
- Sistema : use la cola de mensajes fallidos de todo el sistema.
- Personalizado : use una cola de mensajes fallidos personalizada.
Especificar la cola de mensajes con problemas de entrega a la que se transferirán los mensajes que no se han podido entregar a la aplicación. Para obtener más información sobre los mensajes entregados a la cola de mensajes fallidos, vea el cuadro de diálogo Propiedades de transporte WCF-NetMsmq, 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.

Nota: La cola de mensajes no enviados personalizada solo se admite en Message Queuing (MSMQ) 4.0, publicada con Windows Vista.

Valor predeterminado: Sistema
CustomDeadLetterQueue String Especifique el URI completo con el esquema net.msmq para la ubicación de la cola de mensajes fallidos por aplicación, donde se colocan los mensajes que han expirado o que han producido un error en la transferencia o entrega. Por ejemplo, net.msmq://localhost/deadLetterQueueName. La cola de componentes con problemas de entrega es una cola en el administrador de colas de la aplicación de envío para los mensajes caducados que no se hayan entregado. Esta propiedad es necesaria si la propiedad DeadLetterQueue está establecida en Custom.

El valor predeterminado es una cadena vacía.
TimeToLive System.TimeSpan Especificar el período de validez de los mensajes antes de que caduquen y se coloquen en la cola de mensajes con problemas de entrega. Esta propiedad se define para garantizar que los mensajes con limitaciones temporales no se conviertan en obsoletos antes de que este puerto de envío los procese. Se dice que los mensajes que se encuentren en una cola y no hayan sido consumidos por este puerto de envío en el intervalo especificado caducarán. Los mensajes caducados se envían a una cola especial denominada cola de mensajes con problemas de entrega. La ubicación de la cola de mensajes fallidos se establece con la propiedad DeadLetterQueue .

Valor predeterminado: 1.00:00:00
UseSourceJournal Boolean Especifique si las copias de los mensajes procesados por este puerto de envío deben almacenarse en la cola del diario de origen.

Valor predeterminado: False
SecurityMode Enumeración

- Ninguno
- Mensaje
- Transporte
- Ambos

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-NetMsmq, 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: Transporte
MsmqAuthenticationMode Enumeración

- Ninguno
- WindowsDomain
- Certificado

Para obtener más información sobre los nombres de miembro de la propiedad MsmqAuthenticationMode , vea la propiedad modo de autenticación DE MSMQ en el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq, pestaña Enviar, Seguridad en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores.
Especificar cómo el transporte de MSMQ debe autenticar el mensaje.

Valor predeterminado: WindowsDomain
MsmqProtectionLevel Enumeración

- Ninguno: sin protección.
- Firmar: los mensajes están firmados.
- EncryptAndSign: los mensajes están cifrados y firmados. Para usar este nivel de protección, debe habilitar la integración de Active Directory para MSMQ.
Especificar el modo en que los mensajes están protegidos en el nivel de transporte de MSMQ.

Valor predeterminado: Sign
MsmqSecureHashAlgorithm Enumeración

- MD5
- SHA1
- SHA25
- SHA512
Especificar el algoritmo hash que se usará para calcular la síntesis del mensaje. Esta propiedad no está disponible si la propiedad MsmqProtectionLevel está establecida en None.

Valor predeterminado: SHA1
MsmqEncryptionAlgorithm Enumeración

- RC4Stream
- AES
Especificar el algoritmo que se usará para el cifrado de mensajes a través de la red al transferir mensajes entre los administradores de cola de mensajes. Esta propiedad solo está disponible si la propiedad MsmqProtectionLevel está establecida en EncryptAndSign.

Valor predeterminado: RC4Stream
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-NetMsmq, 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: 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-NetMsmq, 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
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.
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.
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.

Configurar un puerto de envío de WCF-NetMsmq con la consola de administración de BizTalk

Se pueden establecer variables del adaptador de puerto de envío WCF-NetMsmq 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-NetMsmq, como se indica en la tabla anterior.

Configuración de variables para un puerto de envío de WCF-NetMsmq

  1. 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-NetMsmq para la opción Tipo en la sección Transporte de la pestaña General de la referencia de espacio de nombres de la API de desarrolladores e instrucciones de la interfaz de usuario.

  2. En la pestaña General , en la sección Transporte , haga clic en el botón Configurar situado junto a Tipo.

  3. En el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , 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-NetMsmq. Para obtener más información sobre la pestaña General del cuadro de diálogo Propiedades de transporte wcF-NetMsmq , vea el cuadro de diálogo Propiedades de transporte wcF-NetMsmq, enviar, general en la guía de interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.

  4. En el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , en la pestaña Enlace , configure las propiedades de tiempo de espera y las propiedades de transacción y la cola. Para obtener más información sobre la pestaña Enlace del cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , vea el cuadro de diálogo Propiedades de transporte wcF-NetMsmq, 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.

  5. En el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , en la pestaña Seguridad , defina las funcionalidades de seguridad del puerto de envío de WCF-NetMsmq. Para obtener más información sobre la pestaña Seguridad del cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , vea el cuadro de diálogo Propiedades de transporte WCF-NetMsmq, 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.

  6. En el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq , 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 de WCF-NetMsmq , vea la pestaña Propiedades de transporte WCF-NetMsmq, Enviar, Mensajes en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores.

Configurar un puerto de envío de WCF-NetMsmq mediante programación

Puede usar el siguiente formato para establecer las propiedades:

<CustomProps>  
  <ServiceCertificate vt="8" />  
  <UseSSO vt="11">0</UseSSO>  
  <CloseTimeout vt="8">00:01:00</CloseTimeout>  
  <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>  
  <MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>  
  <OpenTimeout vt="8">00:01:00</OpenTimeout>  
  <UseSourceJournal vt="11">0</UseSourceJournal>  
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>  
  <SecurityMode vt="8">Transport</SecurityMode>  
  <CustomDeadLetterQueue vt="8" />  
  <ClientCertificate vt="8" />  
  <MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>  
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>  
  <MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>  
  <EnableTransaction vt="11">-1</EnableTransaction>  
  <TimeToLive vt="8">1.00:00:00</TimeToLive>  
  <MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>  
  <DeadLetterQueue vt="8">System</DeadLetterQueue>  
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>  
</CustomProps>  

El siguiente fragmento de código muestra la creación de un puerto de envío WCF-NetMsmq:

// Use BizTalk Explorer object model to create new WCF-NetMsmq 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-NetMsmq"];  
sendPort.PrimaryTransport.Address = "net.msmq://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

Propiedades y esquema de propiedades de adaptadores de WCF
Instalación de certificados para los adaptadores de WCF
Especificación del cuerpo del mensaje para los adaptadores de WCF
Configuración del adaptador de WCF-NetMsmq
Configuración de puertos de envío dinámico mediante el uso de propiedades de contexto de adaptadores de WCF