无法读取管道生成的流 - 参数名称:格式

Unable to read the stream produced by the pipeline - Parameter name: format

我有一个 BizTalk 2016 FP3 解决方案。使用向导,我为我的发送端口创建了一个平面文件模式,从 xml 到 assemble 到固定位置的文本文件。

当我 运行 通过 BizTalk 时,我得到一个挂起的实例,错误信息如下:

Unable to read the stream produced by the pipeline. 
 Details: Value cannot be null.
Parameter name: format 

因此,我打开了暂停消息的消息选项卡并将 xml 复制到测试文件。然后我 运行 通过 ffasm.exe 工具,将路径作为 -bs 参数传递到我的平面文件模式 - 这个工具的输出是完美的,正是我所期望的平面文件内容。

在发送端口(仅包含 Microsoft 平面文件 assembler 组件),我已使用所需的 schematypename 填充为 "DocumentSpecName" 属性 ,assemblystrongname 。这并不是真正需要的,因为 BizTalk 能够从提升的 namespace#rootnode 确定架构,所以我尝试过不设置 属性 但仍然得到相同的结果。

似乎有多种情况会导致此错误。

  1. 该架构实际上不是平面文件架构(但您已经检查过了),请参见MSDN Unable to read the stream produced by the pipeline, Flat Send Pipeline
  2. 这是一个固定长度的模式,缺少一个必填字段(参见Error details: Unable to read the stream produced by the pipeline. Details: Cannot find definition for the input: {Record, Element, or Attribute} and also Flat file assembler通过强制从源模式创建可选元素来解决。

恐怕这是在我不知道如何修复的情况下修复的。这个问题让我抓狂了好几个小时,所以我回到基础并在不同的开发 VM 上创建了一个新的解决方案 - 它有效!所以,我回到了我的主要开发虚拟机,问题不再存在了。现在我不相信魔法,所以我确定我一定改变了一些东西,但我一直试图通过干预输入文件和平面文件模式来重现错误,但我一直没能做到。

我了解到,使用 VS 对给定 xml 文件的平面文件 "Generate Instance" 是无用的 - 它会生成一个文件,但使用 xml 元素名称作为数据。最好使用 D:\Program Files (x86)\Microsoft BizTalk Server 2016\SDK\Utilities\PipelineTools

中的 FFAsm.exe

现在关闭围绕此进行单元测试,以防错误再次出现。

昨天刚遇到同样的问题,尝试用另一个管道替换管道,应用然后切换回正确的管道。测试。 希望这对你有所帮助。