我目前正在 BizTalk Server 2010 中实施 EDI 解决方案。这是场景:
BizTalk 负责 X.400 邮箱和客户的 ERP 软件之间的正确消息路由。它还用于使用 SharePoint Web 服务将有关交换消息的信息放入 SharePoint 站点。
我正在使用角色链接和 BizTalk 方管理来应用正确的设置(发送端口、UNB6 段中的密码等)。
现在我有以下问题:
当我尝试从客户的 ERP 系统中获取传出的 INVOIC 消息,提取编排中的相关信息并将其写入 SharePoint 站点时,使用 EDI 接收管道的接收端口会暂停,并显示以下内容错误信息:
An output message of the component "EDI disassembler" in receive pipeline
"**********.Pipelines.FileNamePromotionEDIReceivePipeline, **********.Pipelines,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=****************" is suspended
due to the following error:
Error: 1 (Miscellaneous error)
33: Invalid occurence outside message, package or group.
The sequence number of the suspended message is 1.
发生这种情况是因为消息在每个段分隔符之后使用 CR 和 LF 作为后缀。现在我可以将 CR 和 LF 的 ASCII 十六进制代码添加到管道的“EfactDelimiters”设置中,但问题是还有其他没有 CR 和 LF 的消息,然后无法使用相同的管道接收这些消息。顺便说一句,当我使用管道获取其中一条没有CR 和 LF 的消息时,也没有将 CR 和 LF 设置为分隔符,接收端口也被挂起,这一次由于使用点而不是逗号而导致错误消息小数分隔符(尽管我在管道中启用了“UseDotAsDecimalSeparator”选项)。同样,只有更改 EfactDelimiters 才有帮助。
我认为当事方协议中的“字符集和分隔符”页面应该使这成为可能:为每个业务方单独设置分隔符。但是我在这些设置中所做的更改似乎没有任何效果。我将“UNA6 Suffix”设置为“CR LF”,将“Decimal Notation (UNA3)”设置为“.(Decimal)”,重新启动主机实例......同样的问题。
任何人都可以帮忙吗?