【问题标题】:BizTalk Flat File Failed Message RoutingBizTalk 平面文件消息路由失败
【发布时间】:2010-05-06 02:47:05
【问题描述】:
我在网络上发现了一些中断的线程,人们声称能够在具有 XLANGMessage 类型的业务流程中使用接收形状来接收无法组装到特定 xsd 中的平面文件架构文件。
我尝试将接收形状中的消息类型设置为 Microsoft.XLANGS.BaseTypes.XLANGMessage,但此基本类型不可序列化。这会导致构建错误。
是否有一种对象类型可以同时捕获格式良好的 xml 消息的 XmlDocuments 以及格式错误的 xml 和未组装的平面文件?
【问题讨论】:
标签:
biztalk
biztalk2006r2
【解决方案1】:
以粗体字回答您的直接问题 - 是的,您所追求的类型是 System.Xml.XmlDocument。
您需要做的是创建一条新消息,并在选择其类型时,从 .NET 类部分中选择上述类型。
当分配给接收形状时,此消息可以接收任何有效负载,例如,我经常使用它通过 BizTalk 传递 .pdf 文件等格式,而我无需解析它们。但是请注意,尽管有名称,但您在此处拥有的不是 Xml,如果您尝试这样对待,将会给您带来各种问题。
进一步深入探讨您的问题 - 您是否尝试进行某种错误处理编排?
如果你在你的错误处理代码中,你可以有一个接收形状,接收XmlDocument 类型的消息,其过滤器表达式设置为绑定到直接绑定端口的 ErrorReport.ErrorType == "FailedMessage"附加到消息框。
我经常发现有两种接收形状很方便,一种用于捕获路由失败,当我们有任何可能的有效负载时,另一种用于订阅您定义的强类型错误包装器信封并从您的其他业务流程中传递出去来自他们的 CatchException 形状。
这意味着您可以构建一个集中的地方来处理所有异常。
如果您还没有看到它,有一个很好的 post by Charles Young 可以描述与您正在尝试做的事情类似的事情。