Cómo configurar una ubicación de recepción WCF-NetMsmq
Puede configurar una ubicación de recepción WCF-NetMsmq mediante programación o con la consola de administración de BizTalk.
Propiedades de configuración
El modelo de objetos del Explorador de BizTalk permite crear y configurar ubicaciones de recepción mediante programación. El modelo de objetos del Explorador de BizTalk expone la interfaz de configuración de ubicación de recepciónIReceiveLocation que tiene una propiedad de lectura y escritura TransportTypeData . Esta propiedad acepta una bolsa de propiedades de configuración de ubicación de recepción WCF-NetMsmq con formato de un par de nombre y valor de cadenas XML. Para establecer esta propiedad en el modelo de objetos del Explorador de BizTalk, debe establecer la propiedad InboundTransportLocation de la interfaz IReceiveLocation .
No es necesario establecer la propiedad TransportTypeData de la interfaz IReceiveLocation . Si no se establece, el adaptador de WCF-NetMsmq usa los valores predeterminados para la configuración de la ubicación de recepción WCF-NetMsmq, como se indica en la siguiente tabla.
La siguiente tabla enumera las propiedades de configuración que se pueden establecer en el modelo de objetos para el Explorador de BizTalk para la ubicación de recepción WCF-NetMsmq.
Nombre de propiedad | Tipo | Descripción |
---|---|---|
Identidad | Blob XML Ejemplo: <identity> <userPrincipalName value="username@contoso.com" /> </Identidad> |
Especificar la identidad de servicio que proporciona esta ubicación de recepción. Los valores que se pueden especificar para la propiedad Identity difieren según la configuración de seguridad. Esta configuración hace posible que el cliente autentique la ubicación de recepción. 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. |
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. 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 |
EnableTransaction | Boolean | Especifica el tipo de cola de mensajes: transaccional o no transaccional. Si se selecciona esta propiedad, cada mensaje se entrega solo una vez y el remitente recibe una notificación sobre los errores de entrega. Para enviar mensajes a través de puertos de envío transaccionales, los elementos de enlace durable y exactlyOnce del cliente deben establecerse en True. Si esta propiedad está desactivada, los mensajes se transfieren sin garantía de entrega. Nota: Si usa una cola transaccional en esta ubicación de recepción, se debe seleccionar esta propiedad. Valor predeterminado: False |
OrderedProcessing | Boolean | Especifica si los mensajes se procesan en serie. Cuando se selecciona esta propiedad, esta ubicación de recepción admite la entrega de mensajes ordenada cuando se usa junto con un puerto de envío de mensajería o orquestación de BizTalk que tiene la opción Entrega ordenada establecida True en . Solo se puede seleccionar cuando la propiedad EnableTransaction está establecida en True.Para obtener más información sobre la opción Entrega ordenada , consulte los temas adecuados en Vea también. Cuando esta propiedad se establece en True, el WCF-NetMsmq ubicación de recepción optimiza el uso de recursos al controlar mensajes grandes mediante la realización del adaptador de un solo subproceso. Valor predeterminado: False |
MaxConcurrentCalls | Entero | Especificar el número de llamadas concurrentes en una instancia de servicio única. Las llamadas que superan el límite se ponen en cola. El intervalo de esta propiedad es de 0 a Int32.MaxValue. Valor predeterminado: 200 |
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, Recepción, pestaña Seguridad en la guía de la 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 MSMQ en el cuadro de diálogo Propiedades de transporte de WCF-NetMsmq, Recepción, pestaña Seguridad en la guía de la 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. El cifrado asegura la integridad del mensaje, mientras que la firma y el cifrado aseguran la integridad del mensaje y el no repudio. 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, Recepción, Seguridad de la guía de la 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, Recepción, Seguridad de la guía de la 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 |
ServiceCertificate | String | Especificar la huella digital del certificado X.509 para esta ubicación de recepción que los clientes utilizan para autenticar el servicio. El certificado que se va a usar para esta propiedad debe instalarse en mi almacén en la ubicación Usuario actual . Nota: Debe instalar el certificado de servicio en la ubicación Usuario actual de la cuenta de usuario para el controlador de recepción que hospeda esta ubicación de recepción. 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. - 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. El valor predeterminado es una cadena vacía. |
InboundNodeEncoding | Enumeración - Codificación base64 : codificación base64. - Hex : codificación hexadecimal. - Cadena : codificación de texto - UTF-8. - XML : los adaptadores 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 recepción WCF-NetMsmq para descodificar el nodo identificado por la expresión de ruta de acceso del cuerpo especificada en InboundBodyPathExpression. Esta propiedad es necesaria si la propiedad InboundBodyLocation está establecida en UseBodyPath. Valor predeterminado: XML |
DisableLocationOnFailure | Boolean | Especificar si se va a deshabilitar la ubicación de recepción cuyo procesamiento de entrada no se puede realizar correctamente debido a un error de canalización de recepción o de enrutamiento. Valor predeterminado: False |
SuspendMessageOnFailure | Boolean | Especificar si se va a suspender el mensaje de solicitud cuyo procesamiento de entrada no se puede realizar correctamente debido a un error de canalización de recepción o de enrutamiento. Valor predeterminado: True |
IncludeExceptionDetailInFaults | Boolean | Especificar si se va a incluir información de excepción administrada en el detalle de los errores SOAP devueltos al cliente para fines de depuración. Valor predeterminado: False |
Configurar una ubicación de recepción de WCF-NetMsmq con la consola de administración de BizTalk
Se pueden establecer variables de adaptador de ubicación de recepción WCF-NetMsmq en la consola de administración de BizTalk. Si no se definen propiedades en la ubicación de recepción, se utilizarán los valores predeterminados del controlador de recepción establecidos en la consola de administración de BizTalk.
Nota
Antes de completar este procedimiento, debe haber agregado un puerto de recepción. Para más información, consulte Cómo crear un puerto de recepción.
Nota
Las configuraciones de enlace de clientes WCF y ubicaciones de recepción WCF-NetMsmq deben coincidir. Si no es así, las ubicaciones de recepción WCF-NetMsmq pueden perder mensajes entrantes.
Configuración de variables para una ubicación de recepción de WCF-NetMsmq
En la consola de administración de BizTalk, expanda BizTalk ServerAdministration, expanda Grupo de BizTalk, expanda Aplicaciones y, a continuación, expanda la aplicación en la que desea crear una ubicación de recepción.
En la consola de administración de BizTalk, en el panel izquierdo, haga clic en el nodo Puerto de recepción . A continuación, en el panel de la derecha, haga clic con el botón secundario en el puerto de recepción asociado con una ubicación de recepción existente o que desee asociar con una nueva ubicación de recepción. A continuación, haga clic en Propiedades.
En el cuadro de diálogo Propiedades del puerto de recepción, en el panel izquierdo, seleccione Ubicaciones de recepción y, a continuación, en el panel derecho, haga doble clic en una ubicación de recepción existente o haga clic en Nuevopara crear una nueva ubicación de recepción.
En el cuadro de diálogo Propiedades de ubicación de recepción, en la sección Transporte junto a Tipo, seleccione WCF-NetMsmq en la lista desplegable y, a continuación, haga clic en Configurar.
En el cuadro de diálogo Propiedades de transporte WCF-NetMsmq , en la pestaña General , configure la dirección del punto de conexión y la identidad de servicio para la ubicación de recepción del WCF-NetMsmq. Para obtener más información sobre la pestaña General del cuadro de diálogo Propiedades de transporte WCF-NetMsmq , vea la referencia de propiedades de transporte WCF-NetMsmq, Recepción, 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 WCF-NetMsmq , 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 en el cuadro de diálogo Propiedades de transporte WCF-NetMsmq , vea la pestaña Propiedades de transporte WCF-NetMsmq, Recepción, Enlace 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-NetMsmq , en la pestaña Seguridad , defina las funcionalidades de seguridad de la ubicación de recepción del WCF-NetMsmq. Para obtener más información sobre la pestaña Seguridad del cuadro de diálogo Propiedades de transporte WCF-NetMsmq , vea el cuadro de diálogo Propiedades de transporte WCF-NetMsmq, Recepción, Seguridad de la guía de la interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores.
En el cuadro de diálogo Propiedades de transporte 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 WCF-NetMsmq , vea la pestaña Propiedades de transporte WCF-NetMsmq, Recepción, Mensajes de la referencia de espacio de nombres de api de desarrolladores y guía de interfaz de usuario.
Configurar una ubicación de recepción de WCF-NetMsmq mediante programación
Puede usar el siguiente formato para establecer las propiedades:
<CustomProps>
<ServiceCertificate vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<InboundBodyPathExpression vt="8" />
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<SecurityMode vt="8">Transport</SecurityMode>
<OrderedProcessing vt="11">0</OrderedProcessing>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>
<DisableLocationOnFailure vt="11">0</DisableLocationOnFailure>
<MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>
<SuspendMessageOnFailure vt="11">-1</SuspendMessageOnFailure>
<EnableTransaction vt="11">-1</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>
</CustomProps>
El siguiente fragmento de código muestra la creación de una ubicación de recepción WCF-NetMsmq:
// Use BizTalk Explorer object model to create new WCF-NetMsmq receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</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 one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-NetMsmq
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-NetMsmq" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.msmq://mycomputer/private/sampleQueue";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetMsmq"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
Consulte también
Publicar metadatos del servicio para los adaptadores de recepción de WCFque administran hosts y instancias de host de BizTalkCómo cambiar las cuentas de servicio y las contraseñasde instalación de certificados para los adaptadores WCFespecificando el cuerpo del mensaje para los adaptadores wcFconfigurando laentrega ordenada de WCF-NetMsmq adaptador de mensajesque envían y recuperan mensajes dentro de una cola de mensajes de transacción y pública y privada de Active Directory