在TransactedReceiveScope中引发异常时,防止工作流实例中止

时间:2016-10-13 20:19:02

标签: c# .net wcf workflow-foundation-4

我们有一个顺序WCF工作流服务(双向,XAML,IIS托管),可以对在TransactedReceiveScope中执行事务操作的其他WCF服务(不一定是工作流)执行多次调用。我们一直在努力解决一个问题,我们认为这个问题与您无法像使用TransactionScope活动那样轻松设置AbortInstanceOnTransactionFailure标志的值这一事实有关。

每当在我们的体系结构的一个较低层(SOA体系结构中)引发异常时,我们已经对IErrorHandler接口进行了自定义实现,以便在WCF服务中发生异常并设法捕获它们客户端应用程序使用常规的,C#样式的try / catch块而不是使用错误契约)并且在包含整个事务范围的自定义(源自CodeActivity活动)事务活动中正确捕获,环境事务被中止,从而使工作流实例也中止了。

我们想要做的是将异常冒泡到客户端层(API层),让我们的编组像下层一样进行处理(反序列化故障详细信息并将其转换为异常对象),而不是收到通用“工作流程已中止”。错误消息,没有任何进一步的信息。

是否有人遇到类似的问题,或者知道可以采取哪些措施来防止工作流程在中止交易时中止?

我们一直在寻找答案,这个帖子是唯一一个接近我们问题的帖子:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/d068c57e-11bf-4e0c-9544-75ede23c329e/how-do-we-make-the-original-exception-bubble-to-the-client-of-a-wcf-workflow-containing-a

有关异常封送实施的详细信息:

https://web.archive.org/web/20081118071929/http://www.olegsych.com/2008/07/simplifying-wcf-using-exceptions-as-faults/

值得一提的是,相同的行为适用于使用声明式方法(通过* .config文件)的WCF工作流服务,因此在我们的工作流程中实现事务活动之前,这是按预期工作的。

提前致谢。

0 个答案:

没有答案