Gestione dei flussi di dati in ingresso nei componenti della pipeline
Quando si scrive codice disassembler personalizzato per i componenti della pipeline in BizTalk Server, è necessario tenere presenti le considerazioni seguenti.
Apertura del flusso di dati in ingresso nel codice personalizzato di disassembler
Quando si scrive codice disassembler personalizzato per i componenti della pipeline in BizTalk Server, assicurarsi di non chiudere il flusso di dati in ingresso nel codice disassembler. Il flusso in ingresso del messaggio di input è una risorsa condivisa Il flusso in ingresso viene usato anche dal componente di rilevamento del corpo del messaggio nel motore dei messaggi BizTalk Server.
Se si chiude in modo implicito o esplicito il flusso in ingresso, i dati di rilevamento potrebbero andare persi e non sarà possibile esaminare i dati del flusso usando l'evento messaggio e il rilevamento dell'istanza del servizio in BizTalk Server.
Utilizzo del metodo Seek della classe Stream per impostare il puntatore al flusso di dati sull'inizio del flusso
Assicurarsi che il flusso di dati in ingresso venga letto fino a raggiungerne la fine. Ad esempio, se nel codice personalizzato si richiede la lettura di 300 KB di dati e tuttavia ne vengono ricevuti soltanto 34 KB, non presupporre che sia stata raggiunta la fine del flusso. Il codice personalizzato deve essere scritto in modo che il flusso in ingresso venga sempre letto finché non viene restituito il valore di 0 byte.
Nella logica del componente personalizzato, scrivere il codice in modo che il puntatore al flusso di dati venga reimpostato sull'inizio del flusso prima che questo venga restituito. Tale operazione può ad esempio essere eseguita mediante il codice seguente:
myDataStream.Seek(0, SeekOrigin.Begin);
return myDataStream;
Se questa operazione non viene eseguita e il componente corrente legge il flusso fino alla fine, il componente successivo riceverà un flusso apparentemente vuoto poiché il puntatore non è stato impostato sull'inizio del flusso. Ciò può portare al verificarsi di errori imprevisti di analisi e di convalida nei componenti successivi della pipeline.