Cómo configurar una ubicación de recepción WCF-NetTcp
Puede configurar una ubicación de recepción WCF-NetTcp 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 transportTypeData de lectura y escritura. Esta propiedad acepta una bolsa de propiedades de configuración de ubicación de recepción WCF-NetTcp con formato de un par nombre - 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-NetTcp usa los valores predeterminados para la configuración de la ubicación de recepción WCF-NetTcp, 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-NetTcp.
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. Si usa un puerto de recepción solicitud-respuesta, este valor especifica un marco temporal para que se complete la interacción, incluso cuando el cliente 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 | Especificar si un mensaje se envía a la base de datos de cuadro de mensajes mediante la transacción procedente de clientes. Si esta propiedad se establece en True, los clientes deben enviar mensajes mediante el protocolo de transacción especificado en la propiedad TransactionProtocol . Si los clientes envían mensajes fuera del ámbito transaccional, esta ubicación de recepción devolverá una excepción a los clientes y no se suspenderá ningún mensaje. La opción sólo está disponible para las ubicaciones de recepción unidireccionales. Si los clientes envían mensajes en un contexto transaccional para las ubicaciones de recepción de solicitud-respuesta, se devolverá una excepción a los clientes y no se suspenderá ningún mensaje. Valor predeterminado: False |
TransactionProtocol | Enumeración - OleTransaction - WS-AtomicTransaction |
Especificar el protocolo de transacciones que se usará con esta ubicación de recepción. Valor predeterminado: OleTransaction |
LeaseTimeout | System.TimeSpan | Especificar la duración máxima de una conexión agrupada activa. Después de transcurrir el tiempo especificado, la conexión se cierra cuando se atiende la solicitud actual. El adaptador de WCF-NetTcp aprovecha la clase NetTcpBinding para comunicarse con un punto de conexión. Al usar NetTcpBinding en escenarios de carga equilibrada, considere la posibilidad de reducir el tiempo de espera de concesión predeterminado. Para obtener más información sobre el equilibrio de carga al usar NetTcpBinding, consulte el tema correspondiente en Consulte también. Valor predeterminado: 00:05:00 |
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 rango de esta propiedad es desde 1 a Int32.MaxValue. Valor predeterminado: 200 |
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, 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 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, Recepción, 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 cliente. Valor predeterminado: Windows |
TransportProtectionLevel | Enumeración - Ninguno: sin protección. - Firmar: los mensajes están firmados. - EncryptAndSign: los mensajes se cifran y firman. |
Definir 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, Recepción, pestaña 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, Recepción, Seguridad de la guía de la interfaz de usuario y referencia del espacio de nombres de 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. |
UseSSO | Boolean | Especificar si se usa el inicio de sesión único (SSO) empresarial para recuperar credenciales de cliente y emitir, así, un vale de SSO. Para obtener más información sobre las configuraciones de seguridad que admiten SSO, consulte la sección "Enterprise Single Sign-On Supportability for the WCF-NetTcp Receive Adapter" (Compatibilidad con el adaptador de recepción de WCF-NetTcp) en la pestaña Propiedades de transporte WCF-NetTcp, Receive, Security (Recepción), security (Seguridad ) de la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores. |
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-NetTcp 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 |
OutboundBodyLocation | Enumeración - UseBodyElement : use la parte del cuerpo del mensaje de BizTalk para crear el contenido del elemento Body soap para un mensaje de respuesta saliente. - UseTemplate : use la plantilla proporcionada en la propiedad OutboundXMLTemplate para crear el contenido del elemento Cuerpo soap para un mensaje de respuesta 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. Esta propiedad sólo es válida para las ubicaciones de recepción de solicitud-respuesta. 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 de respuesta saliente. Esta propiedad es necesaria si la propiedad OutboundBodyLocation está establecida en UseTemplate. Esta propiedad sólo es válida para las ubicaciones de recepción de solicitud-respuesta. El valor predeterminado es una cadena vacía. |
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-NetTcp con la consola de administración de BizTalk
Se pueden establecer variables de adaptador de ubicación de recepción WCF-NetTcp 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.
Configuración de variables para una ubicación de recepción de WCF-NetTcp
En la consola de administración de BizTalk, expanda la opción Administración de BizTalkServer 2009, Grupo de BizTalk, Aplicacionesy, 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-NetTcp en la lista desplegable y, a continuación, haga clic en Configurar.
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 y la identidad de servicio para la ubicación de recepción del WCF-NetTcp. Para obtener más información sobre la pestaña General en el cuadro de diálogo Propiedades de transporte de WCF-NetTcp , vea la referencia de espacio de nombres de API WCF-NetTcp Propiedades de transporte, Recepción, General en la guía de la interfaz de usuario y la referencia del espacio de nombres de 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, recepción, pestaña Enlace en 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 de WCF-NetTcp , en la pestaña Seguridad , defina las funcionalidades de seguridad del WCF-NetTcp ubicación de recepción. 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, 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.
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 de WCF-NetTcp , vea la pestaña Propiedades de transporte wcF-NetTcp, Recepción, Mensajes en la guía de interfaz de usuario y referencia del espacio de nombres de la API de desarrolladores.
Configurar una ubicación de recepción de WCF-NetTcp mediante programación
Puede usar el siguiente formato para establecer las propiedades:
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UseSSO vt="11">0</UseSSO>
<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">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate vt="8" />
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
El siguiente fragmento de código muestra la creación de una ubicación de recepción WCF-NetTcp:
// Use BizTalk Explorer object model to create new WCF-NetTcp 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-NetTcp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-NetTcp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.tcp://mycomputer/samplepath";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetTcp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
Consulte también
Publicar metadatos del servicio para los adaptadores de recepción de WCFadministrando hosts y instancias de host de BizTalkCómo cambiar las cuentas de servicio y las contraseñasde instalación de certificados para los adaptadores de WCFEspecificando el cuerpo del mensaje para elequilibrio de carga de adaptadores de WCF configurando el adaptador de WCF-NetTcp