我们有一个顺序WCF工作流服务(双向,XAML,IIS托管),可以对在TransactedReceiveScope中执行事务操作的其他WCF服务(不一定是工作流)执行多次调用。我们一直在努力解决一个问题,我们认为这个问题与您无法像使用TransactionScope活动那样轻松设置AbortInstanceOnTransactionFailure标志的值这一事实有关。
每当在我们的体系结构的一个较低层(SOA体系结构中)引发异常时,我们已经对IErrorHandler接口进行了自定义实现,以便在WCF服务中发生异常并设法捕获它们客户端应用程序使用常规的,C#样式的try / catch块而不是使用错误契约)并且在包含整个事务范围的自定义(源自CodeActivity活动)事务活动中正确捕获,环境事务被中止,从而使工作流实例也中止了。
我们想要做的是将异常冒泡到客户端层(API层),让我们的编组像下层一样进行处理(反序列化故障详细信息并将其转换为异常对象),而不是收到通用“工作流程已中止”。错误消息,没有任何进一步的信息。
是否有人遇到类似的问题,或者知道可以采取哪些措施来防止工作流程在中止交易时中止?
我们一直在寻找答案,这个帖子是唯一一个接近我们问题的帖子:
有关异常封送实施的详细信息:
值得一提的是,相同的行为适用于使用声明式方法(通过* .config文件)的WCF工作流服务,因此在我们的工作流程中实现事务活动之前,这是按预期工作的。
提前致谢。