Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se deben tener en cuenta las siguientes consideraciones al escribir código de desensamblador personalizado para los componentes de canalización en BizTalk Server.
No cierre el flujo de datos entrante en código de desensamblador personalizado
Al escribir código de desensamblador personalizado para componentes de canalización en BizTalk Server, asegúrese de no cerrar el flujo de datos entrante en el código del desensamblador. La secuencia entrante del mensaje de entrada es un recurso compartido. El componente de seguimiento del cuerpo del mensaje utiliza también el flujo de entrada en el motor de mensajes de BizTalk Server.
Si cierra de manera implícita o explícita el flujo entrante, es posible que se pierdan los datos de seguimiento y no podrá examinar los datos del flujo mediante el seguimiento de eventos de mensajes e instancias de servicio en BizTalk Server.
Utilice el método Seek de la clase Stream para establecer el puntero del flujo de datos al inicio del flujo.
Asegúrese de leer desde el flujo de datos entrante hasta que se alcance el final de la secuencia. Por ejemplo, si el código personalizado realiza una solicitud de lectura para 300 KB de datos y el código solo recibe 34 KB de datos, no suponga que se ha alcanzado el final de la secuencia. El código personalizado siempre debe leerse desde la secuencia entrante hasta que se devuelvan 0 bytes.
Antes de devolver el flujo de datos en la lógica del componente personalizado, vuelva a establecer el puntero del flujo de datos en el inicio de la secuencia. Por ejemplo, este código muestra la lógica para usar el método seek para apuntar al principio de la secuencia antes de devolver la secuencia:
myDataStream.Seek(0, SeekOrigin.Begin);
return myDataStream;
Si no lo hace y la secuencia se lee al final del componente actual, el siguiente componente recibe lo que parece ser una secuencia vacía porque el puntero del flujo de datos no se estableció en el inicio de la secuencia. Esto puede provocar errores inesperados de análisis y validación en los componentes de canalización posteriores.