Compartir vía


Depuración de errores de orquestación en tiempo real

Esta sección contiene un conjunto de preguntas y respuestas diseñadas para ayudarle a resolver problemas en tiempo de ejecución con las orquestaciones.

¿Por qué obtengo errores de suscripción intermitentes al enviar a una orquestación secundaria que ha sido iniciada recientemente por la orquestación primaria?

El error de suscripción "no se pudo encontrar la suscripción" es el resultado de una condición de carrera. Una condición de carrera ocurre cuando el resultado de un proceso depende del orden específico en el que se lleva a cabo. En este caso, la situación se produce cuando la orquestación infantil no se ha iniciado con tiempo suficiente para recibir el mensaje enviado por el padre.

Para evitar este problema, la orquestación de hijo podría enviar un mensaje de vuelta a la orquestación principal una vez que se haya iniciado y esté preparada para recibir un mensaje. De esta manera, la orquestación principal que la inició sabría que hay un receptor antes de enviar un mensaje.

¿Por qué obtengo errores al adjuntar un puerto de envío dinámico a un puerto lógico?

Un puerto dinámico no está diseñado para heredar todos los atributos y características del puerto asignado. Un puerto dinámico obtiene solo una dirección; no hereda la otra información asociada al puerto lógico.

Por ejemplo, si asocia un puerto de envío dinámico a un puerto lógico con notificación de entrega = transmitido, el tiempo de ejecución no entregará una notificación de entrega. El tiempo de ejecución de XLANG solo escucha una notificación de entrega si el puerto realmente se ha configurado de esa manera estáticamente.

Nota:

En XLANG, los puertos solo se comportarán como se han configurado estáticamente.

Cuando intento ejecutar mi aplicación después de implementar una orquestación con componentes personalizados, ¿por qué obtengo el error "Nombre de archivo o ensamblado o una de sus dependencias no encontradas"?

Este error normalmente significa que el motor de orquestación de BizTalk no puede encontrar el componente personalizado. Debe instalar todos los ensamblados incluidos en una aplicación de BizTalk en la caché global de ensamblados del equipo que hospeda la aplicación.

Se produce un error de "La propiedad de contexto AssemblyName no era válida" al enviar un documento a un servicio web a través de una orquestación.

Problema

El envío de un documento a un servicio web a través de una orquestación produce un error "AssemblyName context property not valid" (Propiedad de contexto AssemblyName no válida).

Causa

La aplicación de BizTalk se diseñó originalmente mediante un enfoque de "mensajería" sin una orquestación intermedia. Este tipo de solución usa un filtro de puerto de envío para vincular el puerto de recepción y el puerto de envío para que el documento se pase al puerto de envío tras la recepción. Más adelante, la solución se modificó para incluir una orquestación enlazada al puerto de envío.

Resolución

Quite el filtro en el puerto de envío. Si aplica un filtro a un puerto de envío que está enlazado a una orquestación, los mensajes a menudo pasarán por alto la orquestación y provocarán un error de propiedad de contexto.

Se produce una excepción "WrongBodyPartException" al controlar un mensaje MIME de varias partes en una orquestación.

Problema

Recibir un mensaje MIME de varias partes en una orquestación da como resultado una excepción WrongBodyPartException.

Causa

Este error puede producirse si el orden de las partes se especifica incorrectamente o los mensajes no se ajustan a las posiciones de pieza especificadas. Por ejemplo, si especifica que la tercera parte es un componente del cuerpo, pero los mensajes llegan con un encabezado en la tercera posición.

Resolución

Compruebe que el ajuste del índice de parte del cuerpo es correcto y asegúrese de que todos los mensajes que llegan a través del adaptador sean coherentes con el ajuste. Puede inspeccionar el contenido de los mensajes MIME que producen un error dentro de una orquestación deteniendo la orquestación (pero manteniéndola enlistada); esto forzará que el mensaje sea publicado para su examen en la consola de Administración y para verificar el orden de sus partes.

No se encuentra el elemento de mensaje MIME de varias partes

Problema

Los intentos de recuperar un elemento de mensaje MIME con un valor de índice mayor que 0 generan un error similar a "no se puede encontrar un mensaje de varias partes con índice = <valor>".

Causa

Las causas más comunes de este error son:

  • El mensaje MIME tiene menos partes de las esperadas.

  • No se pudo analizar completamente el mensaje MIME.

Resolución

Para resolver este problema, asegúrese de que el código recupera solo las partes del mensaje que están dentro del intervalo esperado desde el origen del mensaje. En el caso de un problema de análisis, debe comprobar que el mensaje MIME original es estructuralmente sólido y construido correctamente. Si espera problemas de análisis ocasionales, asegúrese de que la orquestación tenga los controladores de excepciones adecuados.

Recibirá un error "El adaptador de envío de ARCHIVOS no puede abrir el archivo para escribir" al enviar mediante un puerto de envío dinámico.

Problema

Recibe un error "El adaptador de envío de archivos no puede abrir el nombre de archivo<> para escribir" en el registro de eventos de BizTalk Server al enviar mediante un puerto de envío dinámico.

Este problema se produce cuando el BTS. La propiedad OutBoundTransportLocation se define en una expresión de orquestación y se especifica el transporte de archivos; por ejemplo, las expresiones siguientes provocarán este error en tiempo de ejecución:

Message2=Message1;  
Message2(BTS.OutboundTransportLocation) = "file:///c:/test/out";  
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);  

-O-

Message2=Message1;  
Message2(BTS.OutboundTransportLocation) = "file://mymachine/test/out";  
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);  

Causa

Este problema se produce porque en tiempo de ejecución, el motor de orquestación quita el texto "file://" de la dirección URL especificada. Por lo tanto, con los ejemplos anteriores, "file:///c:/test/out" se evalúa como \c:\test\out y "file://mymachine/test/out" se evalúa como mymachine\test\out.

Resolución

Al especificar la URL de la propiedad BTS.OutBoundTransportLocation en una expresión, agregue o quite "/" según sea necesario. Usando los ejemplos anteriores, la propiedad BTS.OutBoundTransportLocation debe definirse como: "file://c:/test/out", que se traduciría como c:\test\out o "file:////mymachine/test/out", que se traduciría como \\mymachine\test\out.