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