Partager via


Gestion des flux de données entrantes dans les composants de pipeline

Les considérations suivantes doivent être prises en compte lors de l’écriture de code de désassembleur personnalisé pour les composants de pipeline dans BizTalk Server.

Ne fermez pas le flux de données entrantes dans le code de désassembleur personnalisé

Lorsque vous écrivez du code de désassembleur personnalisé pour les composants de pipeline dans BizTalk Server, veillez à ne pas fermer le flux de données entrant dans le code du désassembleur. Le flux de données entrantes du message d'entrée est une ressource partagée. Le flux entrant est également utilisé par le composant de suivi du corps du message dans le moteur de message BizTalk Server.

Si vous fermez implicitement ou explicitement le flux entrant, les données de suivi peuvent être perdues et vous ne pourrez pas examiner les données de flux à l’aide d’un événement de message et d’un instance de suivi dans BizTalk Server.

Utilisez la méthode Seek de la classe Stream pour orienter le pointeur de flux sur le début du flux

Assurez-vous que la lecture du flux de données entrantes s'effectue jusqu'à la fin du flux. Par exemple, si le code personnalisé lance une requête de lecture pour 300 Ko de données et que le code ne reçoit que 34 Ko de données, ne pensez pas que la fin du flux a été atteinte. Le code personnalisé doit toujours lire le flux de données entrantes jusqu'à ce qu'il renvoie 0 octet.

Avant de renvoyer le flux de données dans la logique de composant personnalisée, paramétrez le pointeur de flux de données à nouveau sur le début du flux. Par exemple, le code suivant illustre la logique d'utilisation de la méthode Seek pour orienter le pointeur vers le début du flux avant de renvoyer ce dernier.

myDataStream.Seek(0, SeekOrigin.Begin);  
return myDataStream;  

Si vous ne procédez pas ainsi et que le flux est lu jusqu'à la fin dans le composant en cours, le composant suivant reçoit un flux qui paraît vide car le pointeur n'a pas été paramétré sur le début du flux. Ceci peut entraîner des erreurs d'analyse et de validation inattendues dans les composants de pipeline suivants.