Error handling Windows工作流基础4(WF4)错误处理

Error handling Windows工作流基础4(WF4)错误处理,error-handling,workflow-foundation,workflow-foundation-4,Error Handling,Workflow Foundation,Workflow Foundation 4,将错误消息从WF4工作流返回到宿主ASP.NET MVC应用程序的最佳方法是什么?我需要工作流不终止,但继续处于活动状态,然后将有关错误的消息传递回宿主应用程序,以便用户可以采取其他操作,但我不确定如何执行该操作。为了保持工作流的活动性,您需要捕获工作流中的异常。将TryCatch活动添加到工作流中,在Catch块中,可以使用Send或自定义活动将数据发送到主机应用程序 一个例外是将WorkflowApplication.OnUnhandledException与持久性一起使用,并指定中止。在这

将错误消息从WF4工作流返回到宿主ASP.NET MVC应用程序的最佳方法是什么?我需要工作流不终止,但继续处于活动状态,然后将有关错误的消息传递回宿主应用程序,以便用户可以采取其他操作,但我不确定如何执行该操作。

为了保持工作流的活动性,您需要捕获工作流中的异常。将TryCatch活动添加到工作流中,在Catch块中,可以使用Send或自定义活动将数据发送到主机应用程序


一个例外是将WorkflowApplication.OnUnhandledException与持久性一起使用,并指定中止。在这种情况下,只需删除工作流的内存中状态,即可重新加载工作流以获得最后一个持久化状态。如果您这样做,您需要使用Perist活动确保在无法重做的事情发生时保存您的工作流。

对于WF4来说,TryCatch实际上是不够的。此外,从工作流主机处理未处理的异常事件并不能真正告诉您哪些活动失败以及为什么失败

建议在WF4中使用TryCatch和活动跟踪。这里可以找到一个很好的总结:


您可以使用跟踪参与者和捕获处理程序扩展您的工作流主机,该处理程序封装可能出现故障的活动,处理异常并创建新的跟踪记录,以更好地说明发生了什么。

Maurice,我的工作流目前不是WCF工作流(XAMLX),是否需要使用您上面描述的发送活动?不,不需要使用发送。任何向主机发送数据的自定义活动都可以。顺便说一句,发送活动使用WCF消息,但可以从任何工作流主机使用,它是需要WorkflowServiceHost的接收活动。好的,我创建了一个自定义活动,只从TryCatch获取错误消息,然后将其分配给OutArgument,但我看不到如何在我的托管应用程序中获取OutArgument的值。我尝试使用WorkflowApplication,因为我也有需要恢复的书签,但我只在使用WorkflowInvoker并从中获取输出字典时看到了工作流的输出。是否有办法从WorkflowApplication获取数据?WorkflowApplication具有已完成的属性。将它指向某个函数,该参数将包含与结果相同的输出字典。好的,谢谢,但是如果工作流尚未完成,我如何获取数据?我正在讨论在处理工作流时发生的错误的异常处理,并且在工作流故障发生的活动中,您说我可以添加一个Tycatch,然后在catch中有一个自定义活动将数据发送回主机,但此场景中的工作流尚未完成。仅当您需要知道是哪个活动导致了错误时,才需要跟踪扩展。TryCatch可以很好地捕捉错误并告诉你哪里出了问题,它只是缺少的地方。这或多或少是我的观点。我应该说得更清楚些。患有严重的鼻窦感染,我的答案想得不太清楚。