Condividi tramite


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.

Non chiudere il flusso di dati in ingresso nel codice personalizzato dissasember

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 dal 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 di BizTalk Server.

Se si chiude in modo implicito o esplicito il flusso in ingresso, è possibile che i dati di rilevamento vadano persi e che non sia possibile esaminare i dati del flusso usando il rilevamento di eventi messaggio e istanze del servizio in BizTalk Server.

Usare il metodo Seek della classe Stream per impostare il puntatore del flusso di dati all'inizio del flusso

Assicurarsi di leggere dal flusso di dati in ingresso fino al raggiungimento della fine del flusso. Ad esempio, se il codice personalizzato effettua una richiesta di lettura per 300 KB di dati e il codice riceve solo 34 KB di dati, non presupporre che sia stata raggiunta la fine del flusso. Il codice personalizzato deve sempre leggere dal flusso in ingresso fino a quando non vengono restituiti 0 byte.

Prima di restituire il flusso di dati nella logica del componente personalizzato, reimpostare il puntatore del flusso di dati all'inizio. Ad esempio, questo codice illustra la logica per usare il metodo seek per puntare all'inizio del flusso prima di restituire il flusso:

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

Se non si esegue questa operazione e il flusso viene letto alla fine del componente corrente, il componente successivo riceve ciò che sembra essere un flusso vuoto perché il puntatore al flusso di dati non è stato impostato sull'inizio del flusso. Ciò può causare errori di analisi e convalida imprevisti nei componenti della pipeline successivi.