Compartir a través de


Consideraciones al consumir servicios Web

Esta sección proporciona información que es necesario tener en cuenta a la hora de consumir servicios Web.

Utilizar dos caracteres de subrayado del nombre de parámetro

Los nombres de parámetros de métodos Web no pueden empezar con "__" (dos caracteres de subrayado). Es posible que los nombres que empiezan con dos caracteres de subrayado creen entidades de mensajes Web que no son compatibles (inutilizables) en XLANG/s.

El elemento any y los atributos anyAttribute no son compatibles en los métodos Web

No puede usar ningún elemento ni atributo anyAttribute en el esquema de un método Web.

Utilizar palabras clave para XLANG/s

Un nombre de servicio web o un nombre de método web no puede ser una palabra clave en un XLANG/s. Si usa una palabra clave XLANG/s en el nombre del servicio web o el nombre del método web, recibirá un error de compilación al agregar el servicio web. Para obtener una lista de palabras reservadas para el idioma XLANG/s, vea Palabras reservadas de XLANG-s.

Compatibilidad de XLANG/s necesaria para tipos de parámetros

Utilizar un tipo de parámetro de método Web que no sea compatible con XLANG/s producirá errores de compilación. Por ejemplo, BizTalk Server no es compatible con un parámetro compuesto por una matriz de dimensión de tipos de esquemas. Además, BizTalk Server no es compatible con matrices multidimensionales. Para obtener una lista de palabras que XLANG/s se reserva en BizTalk Server, consulte Palabras reservadas de XLANG-s.

Evitar errores de compilación producidos al agregar referencias Web que contienen palabras clave o identificadores C#

Al usar la referencia agregar servicio para agregar referencias de servicio a proyectos de BizTalk, BizTalk Server convierte los tipos de esquema necesarios para llamar a cada método web a esquemas. BizTalk Server agrega estos esquemas a Reference.xsd. Si los esquemas contienen nombres de elemento que son palabras clave de C# o el nombre del elemento no es válido como identificador de C#, puede obtener un error en tiempo de ejecución. Para evitar que se produzcan errores en tiempo de ejecución, asegúrese de que el servicio Web que consume no contiene nombres de elementos que sean palabras clave C# o identificadores C# no válidos.

Varias definiciones no admitidas de tipo de puerto/servicio

BizTalk Server admite que se agregue un archivo de servicio Web con una única definición de tipo de puerto y de servicio. Si agrega un archivo WSDL con varias definiciones de tipo de puerto o de servicio, es posible que reciba el siguiente error:

No se pudieron generar archivos de BizTalk. Referencia de objeto no establecida en una instancia de un objeto.

Compatibilidad para utilizar matrices expuestas por servicios Web

BizTalk Server puede consumir matrices de una dimensión y escalonadas expuestas por servicios Web que no son servicios Web de BizTalk. Para obtener más información sobre cómo consumir matrices de servicios web, consulte Consumo de matrices de servicios web.

Nota

No se permite la sintaxis de matrices multidimensionales. Por ejemplo, MyArray[1,5].

Nota

BizTalk Server no admite el consumo de una matriz de objetos DataSet expuestos por un servicio web. El subservicio XLANG/s no admite, de forma nativa, la clase .NET DataSet, pero si crea un proyecto de BizTalk que contenga una referencia Web en un servicio Web que exponga una matriz de objetos .NET DataSet, se producirán errores al intentar compilar el proyecto.

Parámetros del método Web deben ser serializables con Xml

Todos los parámetros de un servicio Web consumido deben ser serializables con Xml. Si agrega un método Web que contenga un parámetro que no es serializable con Xml, es posible que reciba el siguiente mensaje de error:

System.Xml.Element debe ser serializable con Xml para ser un tipo de parte de mensaje.

Nota

Se admiten los tipos de datos , XmlDocument y DataSet, aunque no se pueden serializar xml.

Consumir servicios Web únicamente de mensajería

Al consumir servicios Web únicamente de mensajería, todos los nombres de partes del cuerpo del mensaje de BizTalk deben ajustarse a los nombres de parámetros del método Web. Por ejemplo, si la firma del servicio web es WebMethod(MyType1 type1, MyType2 type2), el nombre del elemento debe ser type1 y type2, puede obtener el siguiente error en tiempo de ejecución:

No se pudo recuperar la parte de mensaje para el parámetro %1

Para obtener más información, vea Cómo consumir servicios web en un escenario de solo mensajería.

Configurar un puerto de envío SOAP mediante programación

Es posible establecer propiedades de configuración mediante programación en el contexto del mensaje. Se pueden establecer estas propiedades en una orquestación o en un componente de canalización personalizado, si el puerto de envío es estático o dinámico.

Nota

Para configurar la propiedad MethodName para el puerto de envío SOAP estático mediante programación, debe establecer nombre de método en [Especificar más adelante] en la pestaña Servicio web del cuadro de diálogo Propiedades de transporte SOAP en la consola de administración de BizTalk Server.

Para obtener más información sobre la propiedad MethodName , vea How to Dynamically Set the URI of a Consumed Web Service.

Para obtener más información sobre el cuadro de diálogo Propiedades de transporte SOAP , vea el cuadro de diálogo Propiedades de transporte SOAP, la pestaña Servicio web en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores.

Reglas de propiedades

Si la propiedad de configuración se establece en una orquestación o en un componente de canalización personalizado de una canalización de recepción, se aplican las siguientes reglas:

  • Si se envía un mensaje a un puerto de envío estático, el valor de la propiedad se sobrescribirá con el valor configurado para dicho puerto de envío.

  • Si el mensaje se envía a un puerto de envío dinámico, el valor de la propiedad no se sobrescribirá.

    Si una propiedad de configuración se establece en un componente de canalización personalizado de una canalización de envío, se aplica la siguiente regla:

  • El valor no se sobrescribirá independientemente de que el mensaje se envíe a un puerto de envío estático o dinámico. En otras palabras, los componentes de canalización de envío sobrescriben la propiedad de configuración sin tener en cuenta dónde se ha definido.

  • Para obtener más información sobre los componentes de canalización personalizados, consulte Desarrollo de componentes de canalización personalizados.

  • Para obtener más información sobre las propiedades de configuración del adaptador de envío SOAP, vea Cómo establecer dinámicamente el URI de un servicio web consumido.

Agregar una referencia Web a un servicio Web consumido que contiene un esquema multiraíz producirá un error de compilación

Si agrega una referencia Web a su proyecto para un servicio Web que se ha derivado de una orquestación de BizTalk publicada y la orquestación contiene un esquema con varias raíces, se producirá un error al compilar el proyecto. Si agrega una referencia Web al proyecto que se ha derivado de una orquestación de BizTalk publicada, asegúrese de que la orquestación no contiene esquemas multiraíces.

Utilizar TypedDataSets como parámetros en métodos Web

A continuación, se muestran los pasos necesarios para permitir que se utilice TypedDataSets como parámetros en métodos Web:

  1. Agregue la referencia Web a un proyecto C# y genere el proxy.

  2. Cree un puerto de envío SOAP y especifique el proxy en el puerto de envío y seleccione el método.

  3. En la orquestación, defina un puerto enlazado en tiempo de ejecución y los tipos de mensajes. En la mayoría de los casos en los que no se necesita ninguna promoción de propiedades o acceso a campos distintivos, el tipo se puede definir como XMLDocument. Seleccione las canalizaciones PassThrough con este tipo.

  4. En BizTalk Server consola de administración, en la pestaña Servicio web del cuadro de diálogo Propiedades de transporte SOAP del puerto de envío SOAP, especifique que desea usar ese proxy que creó. También será necesario especificar el ensamblado, tipo y método. Para obtener más información, consulte el cuadro de diálogo Propiedades de transporte SOAP, la pestaña Servicio web en la guía de la interfaz de usuario y la referencia del espacio de nombres de api de desarrolladores.

Agregar una referencia Web a un servicio Web consumido que contiene un método Web que espera que los parámetros basados en tipos genéricos produzcan un error de compilación

Si agrega una referencia Web a su proyecto para un servicio Web que contiene un método Web que espera que los parámetros basados en tipos genéricos como los parámetros anulables, se producirá un error al compilar el proyecto. Esto no se admite. Debe utilizar especialización explícita para llamar a la clase genérica de XLANG/s.

Generación de esquemas de BizTalk mediante la opción Agregar referencia de servicio

Al usar la referencia agregar servicio para agregar referencias de servicio a proyectos de BizTalk, BizTalk Server convierte los tipos de esquema necesarios para llamar a cada método web a esquemas. BizTalk Server agrega estos esquemas a Reference.xsd. Para asegurarse de que agregar referencia de servicio genera correctamente los esquemas de BizTalk, los servicios web deben cumplir las siguientes directrices:

  • Los métodos web deben tener SoapDocumentMethodAttribute en lugar de SoapRpcMethodAttribute.

  • Los servicios web y los métodos deben usar el enlace literal en lugar de codificado como [SoapDocumentMethod(Use=SoapBindingUse.Literal)].

  • Los parámetros de método web y los tipos de valor devuelto deben tener XmlRootAttribute con una propiedad Namespace válida a menos que sean tipos XSD nativos y el tipo XmlNode.

  • Los métodos web no deben usar las propiedades RequestNamespace y ResponseNamespace en SoapDocumentMethodAttribute.

  • Los servicios Web deben ser compatibles con la versión 1.1 del perfil básico de Interoperabilidad de servicios Web (WSI).

XSD no contendrá nodos para tipos de parámetro simples

Cuando se agrega una referencia Web y el método Web tiene un parámetro de tipo simple, el XSD generado no contendrá nodos para ese parámetro. En cambio, el mensaje de varias partes que se genere contendrá una parte de tipo simple. La orquestación debe controlar esta parte de mensaje de forma adecuada. Si es una parte de la solicitud al servicio Web, asigne manualmente el valor para esa parte con un mensaje de forma de asignación. Si es una parte de la respuesta del servicio Web, obtenga acceso manualmente a esa parte, en una forma de expresión, para ver el valor.

La opción Agregar referencia de servicio no es compatible con el elemento de importación de Lenguaje de descripción de servicios Web (WSDL)

Se ha producido un error en la opción Agregar referencia de servicio al agregar referencias de servicio para el archivo WSDL con el elemento de importación.

Consulte también

Construcción de mensajes web