我正在使用BizTalk 2004
我有一个具有异常块的业务流程,它会在遇到异常之前发送它正在创建的实际日志文件。
这是设计: 我的日志文件消息可能包含多个记录实例,例如:(我在节点中添加了“ - ”,以便您可以看到示例)
< -log> < -record> < -node1 /> < -node2 /> < - /记录> < -record> < -node1 /> < -node2 /> < - /记录> < - /日志>
我在Long Running Transaction中有一个整体范围,它有一个捕获System.Exception的异常块 范围内是我的请求消息的整体处理,其中包含多个记录。日志文件最初仅使用标头(日志)构建,然后日志文件在记录的循环中更新,其中它从请求中获取记录,该记录被单独处理为单个xml。它将循环遍历每个单独的xml,然后将记录添加到日志文件中。
这个构造的日志文件在循环处理后成功发送出去。现在我想发送一个异常命中时构造的日志文件。正如我所说,日志文件正在循环中更新和构建。但是当我尝试在异常块中发送日志文件时,我点击了“使用未构造的消息”的事情,所以我尝试将日志文件保存在xmldocument中然后使用xmldocument在异常块内构造消息,但是我有xmlDocument本身的“使用未构造的消息”事物
如果您能告诉我如何在长时间运行的事务范围内成功发送异常块内的日志文件,将不胜感激。
提前致谢!
答案 0 :(得分:5)
如果我正确理解您的描述,问题在于您在作用域中创建了一条消息,然后您希望在同一作用域的异常处理程序中使用该消息。 就编译器而言,不能保证在抛出异常之前构造消息,在这种情况下异常处理程序可以在未构造消息的情况下执行。 如果您在消息构造形状之前或之前在范围内出现故障,则会发生这种情况。
要解决此问题,您必须在异常处理程序使用该消息的作用域之前最初构造消息。然后你可以在范围内重新构造形状,但是这样可以保证,当遇到异常处理程序时,会以某种方式存在一条消息。