2009-12-15 38 views
1

我有一个顺序工作流,它作为工作流服务驻留在IIS中。Windows工作流 - 无法处理ReceiveActivity中的异常

我的工作流程以ReceiveActivity开头,并在ReceiveActivity内使用SendActivity调用WCF服务。如果此呼叫接收到异常,则我的ReceiveActivity上会有一个FaultHandlerActivity用于处理呼叫,并将默认值发送回客户端。

我的客户端发生了什么情况,即使我的FaultHandlerActivity正在运行,SendActivity上的异常仍然以FaultException形式冒泡回客户端(我通过在我的错误中记录单个CodeActivity的开始和结束来验证这一点处理程序)

我的问题是:如何吞服发生活动中发生的异常,而不会将FaultException返回给客户端?

回答

0

好吧,我想通了。

我的receiveActivity直接在它上面有一个错误处理程序。然后会发生的事情是,如果任何子活动引发异常,则会调用接收活动上的错误处理程序,并将其设置为Faulted状态,并将收到的异常返回给客户端应用程序 - 无论我是否想要。

解决的办法是在receiveActivity内部添加一个序列活动,完成序列活动中的所有处理,并向序列添加一个faultHandlerActivity,Sequence设置我的默认返回值。

接收活动永远不会发生故障,并且异常不会返回给我的客户端,但会返回序列的FaultHandler中设置的默认值。

希望这会帮助别人有同样的问题