我正在寻找一种方法来捕获BizTalk 2006 R2引发的实际异常时,接收端口无法解析它收到的消息。BizTalk 2006 R2模式验证特定的错误消息与失败的邮件路由
例如,我有一个没有正确创建的csv文件,说它缺少逗号,所以当BizTalk试图确定消息类型时,它出错了。不使用失败的消息路由,应用程序事件日志中有2个条目。其中有一个非常通用的错误描述,如“消息引擎在处理一个或多个入站消息期间遇到错误”。第二项有我正在寻找的。它将包含错误逗号的详细信息,这些内容包括“寻找时发现的意外数据: ”,“ ”当前定义被解析为POSTrailer。错误发生处的流偏移量为44443。错误发生的位置是244.发生错误的位置是1.“
我试过用BizTalk 2006 R2的ESB工具包异常处理程序。使用失败的消息路由及其异常处理框架,它捕获的错误描述是第一个通用错误描述。
我没有看到任何方式获得第二个更详细的错误描述。我假设在biztalk消息传递引擎的某个地方,这个异常正在被抛出,而这个异常在进程中被更高一些的东西所捕获,这引发了它自己的通用biztalk异常。我还假定更具体的错误描述被包含作为被路由到ESB工具箱的异常的内部异常,但是到我能得到它的时候,据我所知,实际的异常对象已经被消息上下文所取代,这只不过是一堆名称/值对。错误描述现在是通用的,没有什么帮助,类似内部异常的东西只是一个十六进制代码,对我的最终用户来说没有任何意义。
我发现的有关获取特定错误消息的所有内容都会处理从业务流程中抛出的异常。但我并没有处理编排问题,我正在处理一个接收端口。我能找到的最接近的是here。但即使我可以使用它创建自定义管道组件,这意味着我需要将该组件添加到每个正在出现的自定义管道中,或者创建一个新组件来验证XML并使用该组件,而不是使用BizTalk附带的XMLRecieve或XMLSend管道这也意味着EDI产生的陷阱错误是不可能的。有没有人知道从BizTalk生成的错误消息得到这个更详细的错误描述的方法?
为什么这将会发送给您的最终用户?我所从事的每个组织都将这一切留给了BizTalk管理员(通常是系统管理员或BizTalk开发组)。你是否希望允许一些代码重新生成文件? – AllenG 2011-04-20 19:04:39
@AllenG - 这个最终目标将是一个网站,最终用户可以使用它来监控流程并解决任何错误。我所指的最终用户是业务流程所有者。他们无需了解BizTalk管理,他们需要知道(例如)由供应商发送的采购订单将其发送到分析数据库,如果不是,发生了什么。我当然是biztalk开发人员和管理员,但现在我们已经获得了足够的应用程序,以至于我无法处理所有的管理任务。 – 2011-04-20 19:58:42