共用方式為


處理管線元件中的傳入數據流

在 BizTalk Server 中撰寫管線元件的自定義反組譯碼程式代碼時,應該考慮下列事項。

請勿關閉自定義解譯程式程式代碼中的傳入數據流

當您在 BizTalk Server 中為管線元件撰寫自定義反組譯碼程式代碼時,請確定您不會關閉反組譯程式程式代碼中的傳入數據流。 來自輸入訊息的連入數據流是共享資源。 BizTalk Server 訊息引擎中的訊息本文追蹤元件也會使用傳入數據流。

如果您隱含或明確關閉傳入數據流,追蹤數據可能會遺失,而且您無法使用 BizTalk Server 中的訊息事件和服務實例追蹤來檢查數據流數據。

使用 Stream 類別的 Seek 方法,將數據流指標設定為數據流開頭

請確定您已從連入數據流讀取,直到到達數據流結尾為止。 例如,如果自定義程式代碼對 300 KB 的數據提出讀取要求,而且程式代碼只收到 34 KB 的數據,則不要假設已達到數據流的結尾。 自定義程式代碼應該一律從傳入數據流讀取,直到傳回0個字節為止。

在傳回自定義元件邏輯中的數據流之前,請將數據流指標設定回數據流的開頭。 例如,此程式代碼說明在傳回數據流之前,使用 seek 方法指向資料流開頭的邏輯:

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

如果您不這麼做,而且數據流被讀取至當前元件的結尾,則下一個元件會收到看似空白的數據流,因為數據流指標未設定為指向數據流的開始。 這可能會導致後續管線元件發生非預期的剖析和驗證錯誤。