Controlar secuencias de datos entrantes en componentes de canalización
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 cerrar la secuencia de datos entrantes del código desensamblador personalizado
Al escribir código de desensamblador personalizado para los 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 de mensaje de entrada es un recurso compartido. El componente de seguimiento del cuerpo del mensaje también usa la secuencia entrante en el motor de mensajes de BizTalk Server.
Si cierra implícita o explícitamente la secuencia entrante, es posible que se pierdan los datos de seguimiento y no podrá examinar los datos del flujo mediante el seguimiento de instancias de servicio y eventos de mensaje en BizTalk Server.
Utilizar el método Seek de la clase Stream para establecer el puntero de la secuencia de datos en el inicio de la secuencia
Asegúrese de leer desde la secuencia de datos entrantes hasta que se alcance el final de la secuencia. Por ejemplo, si el código personalizado solicita una lectura de 300 KB de datos y el código sólo recibe 34 KB, no suponga que se ha alcanzado el final de la secuencia. El código personalizado siempre debería leer desde la secuencia entrante hasta que se devuelvan 0 bytes.
Antes de devolver la secuencia de datos en la lógica de componentes personalizada, vuelva a establecer el puntero de la secuencia de datos al principio de la secuencia. Por ejemplo, este código muestra la lógica para utilizar el método seek para señalar el principio de la secuencia antes de devolver la secuencia:
myDataStream.Seek(0, SeekOrigin.Begin);
return myDataStream;
Si no lo realiza y la secuencia se le desde el final del componente actual, el componente siguiente recibe lo que parece ser una secuencia vacía porque el puntero de la secuencia de datos no está establecido al principio de la secuencia. Se puede generar un error inesperado en los componentes de canalización posteriores al analizar y validar.