处理管道组件中的传入数据流

在 BizTalk Server 中为管道组件编写自定义反汇编程序代码时,应考虑以下事项。

不要在自定义拆装器代码中关闭传入数据流

在 BizTalk Server 中为管道组件编写自定义反汇编程序代码时,请确保不要关闭反汇编程序代码中的传入数据流。 来自输入消息的传入流是共享资源。 传入流也由BizTalk Server消息引擎中的消息正文跟踪组件使用。

如果隐式或显式关闭传入流,跟踪数据可能会丢失,并且无法在 BizTalk Server 中使用消息事件和服务实例跟踪来检查流数据。

使用 Stream 类的 Seek 方法将数据流指针设置到流的开始位置

确保读取传入数据流时达到流的末尾。 例如,如果自定义代码做出 300 KB 数据的读取请求,并且代码仅收到 34 KB 数据,此时不要认为已达到流的末尾。 自定义代码始终应该从传入流中进行读取,直到返回 0 字节。

在自定义组件逻辑中返回数据流前,请将数据流指针设置回流的开始位置。 例如,下面的代码说明了在返回流前使用 Seek 方法指向流的开始位置的逻辑:

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

如果不这样做,并在当前组件中读取到了流的末尾,由于未将数据流指针设置到流的开始位置,下一个组件收到的将是一个空流。 这可能会在随后的管道组件中导致意外的解析错误和验证错误。