處理管線元件中的內送資料流
在 BizTalk Server 中撰寫管線元件的自訂反組譯程式程式碼時,應該考慮下列事項。
請勿關閉自訂解譯器程式碼中的內送資料流
當您在 BizTalk Server 中撰寫管線元件的自訂反組譯程式程式碼時,請確定您不會關閉反組譯程式程式程式碼中的傳入資料流程。 來自輸入訊息的內送資料流是共用的資源。 BizTalk Server訊息引擎中的訊息本文追蹤元件也會使用傳入資料流程。
如果您隱含或明確關閉傳入資料流程,追蹤資料可能會遺失,而且您將無法在BizTalk Server中使用訊息事件和服務實例追蹤來檢查資料流程資料。
使用 Stream 類別的 Seek 方法將資料流指標設定到資料流的開頭
請確定您讀取了完整的內送資料流,直到讀完資料流結尾為止。 例如,如果自訂程式碼要求讀取 300 KB 的資料,而程式碼只收到 34 KB 的資料時,請勿假設已到達資料流的結尾。 自訂程式碼應該一律從內送資料流讀取,直到傳回 0 個位元組為止。
在自訂元件邏輯中傳回資料流之前,請先將資料流指標設回資料流的開頭。 例如,此程式碼示範使用 Seek 方法,在傳回資料流之前指向資料流開頭的邏輯:
myDataStream.Seek(0, SeekOrigin.Begin);
return myDataStream;
如果您未執行上述動作,且資料流讀取到目前元件中的結尾,下一個元件就會收到顯示為空的資料流,因為資料流指標未設定到資料流的開頭。 這可能會在後續的管線元件中造成未預期的剖析和驗證錯誤。