Biztalk 带有自定义反汇编程序的恢复消息落在无限循环中

Biztalk 带有自定义反汇编程序的恢复消息落在无限循环中,biztalk,Biztalk,我创建了自定义管道组件反汇编程序,该反汇编程序创建消息如下: public void ComposeMessage(Stream processingStream, Microsoft.BizTalk.Component.Interop.IPipelineContext pc, Microsoft.BizTalk.Message.Inte

我创建了自定义管道组件反汇编程序,该反汇编程序创建消息如下:

public void ComposeMessage(Stream processingStream,
                                        Microsoft.BizTalk.Component.Interop.IPipelineContext pc,
                                        Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg,
                                        Queue msgs
                                        )
    {
        IBaseMessage outMsg = pc.GetMessageFactory().CreateMessage();
        outMsg.AddPart("Body", pc.GetMessageFactory().CreateMessagePart(), true);
        outMsg.Context = inmsg.Context;

        processingStream.Seek(0, SeekOrigin.Begin);
        outMsg.GetPart("Body").Data = processingStream;

        msgs.Enqueue(outMsg);
    }
创建的邮件正在保存到文件中

但是,当反汇编程序中出现错误,并且消息从“BizTalk Server管理控制台”恢复时,它工作正常 它陷入无限循环,产生大量文件,直到终止

我在代码中添加了Debug.Write,我看到反汇编方法在恢复消息时被调用了大量时间


这对Biztalk正常吗?是否有办法更改,以便像在正常处理中一样调用反汇编方法一次?

如果在管道组件中引发异常,则需要使用catch块中的其余输入流。我认为它试图将未读数据流的剩余部分处理为更多的消息

如果在管道组件中抛出异常,则需要使用catch块中的其余输入流。我认为它试图将未读数据流的剩余部分处理为更多的消息

什么是无限循环?您的代码或消息正在不断重新提交。据我所知,Biztalk管道正在调用包含我的代码的标准“反汇编”函数?在一个循环中。但仅限于暂停+恢复的消息。什么是无限循环?您的代码或消息正在不断重新提交。据我所知,Biztalk管道正在调用包含我的代码的标准“反汇编”函数?在一个循环中。但仅适用于挂起+恢复的邮件。是的,我会在出错时抛出异常。如何使用输入流的其余部分?读到最后?是的,我会在出错时抛出异常。如何使用输入流的其余部分?把它读到最后?