我正在使用 Windows Server AppFabric 运行几个 WF 4 服务。有时,工作流中发生未处理的异常并被放弃(如果对未处理异常的操作设置为“放弃”)或暂停(如果操作设置为“放弃并暂停”)。
在“放弃”的情况下,工作流在异常发生后仍处于“运行(活动)”状态,我希望 AppFabric WorkflowManagementService 能够从其最后一个持久点自动继续工作流。
在“放弃和暂停”的情况下,我希望能够通过 AppFabric 仪表板手动恢复工作流程。
在任何一种情况下,这都不会发生,但我在 AppFabric 仪表板和 Windows 事件查看器(Windows -> 应用程序服务器-系统服务 -> 管理员)中收到各种错误和警告消息:
错误:
无法在“net.pipe://jon-hp/Afis.Workflow/ServiceManagement.svc”调用服务管理端点以激活服务“/Afis.Workflow/ATP.xamlx”。\rException: '打开操作未完成在 00:01:00 分配的超时时间内。分配给此操作的时间可能是较长超时的一部分。
错误:
无法通过控制端点 net.pipe://jon-hp/Afis.Workflow/ATP.xamlx/System.ServiceModel.Activities_IWorkflowInstanceManagement 恢复实例 d626005a-63bd-4ab1-8192-62616755015c。\rException: System.TimeoutException: 打开操作未在分配的 00:01:00 超时时间内完成。分配给此操作的时间可能是较长超时的一部分。内部异常:System.TimeoutException:管道连接被中止,因为从管道的异步读取未在分配的超时 00:00:59.9989999 内完成。分配给此操作的时间可能是较长超时的一部分。内部异常:System.IO.PipeException:操作无法完成,因为管道已关闭。这可能是由于管道另一端的应用程序退出造成的。
警告(每 20 分钟一次)
WMS 无法激活任何主机 - 退出。存储名称“defaultSqlPersistenceStore”(“根”)。
Net.pipe 已为我的网站和应用程序启用,我可以看到 IIS 管理器 -> 端点 -> 删除过滤器 (System.ServiceModel.Activities.IWorkflowInstanceManagement) 中列出的管理端点。
我的应用程序端点正在运行带有传输安全性和 Windows 身份验证的 net.tcp。
这个线程似乎是相关的,但我没有设法解决我的问题: http ://social.msdn.microsoft.com/Forums/en/dublin/thread/e1705e89-34cc-4526-b11e-9d67d66c403d
编辑 1:我的场景涉及客户端调用工作流 A,它进行一些处理,然后持续并返回。然后工作流 A 调用工作流 B,工作流 B 立即抛出异常。工作流 A 没有捕捉到这一点,并被放弃,但仍从其最后一个持久点运行(活动)。工作流 B 也被放弃但尚未持久化,因此状态为 Running (Idle),等待来自工作流 A 的消息。
然后我希望工作流 A 自动恢复并再次调用工作流 B,但这不会发生。
编辑 2:我在事件日志中得到的错误类型似乎不一致。在期间,我没有收到任何错误,但我也看到了以下错误(除了上述错误):
Failed to Resume instance 032274d1-b6e6-4163-a33a-73bffc8da2cc via control endpoint net.pipe://jon-hp/Afis.Workflow/ATP.xamlx/System.ServiceModel.Activities_IWorkflowInstanceManagement.\rException: System.ServiceModel.FaultException: The execution of an InstancePersistenceCommand was interrupted because the instance '032274d1-b6e6-4163-a33a-73bffc8da2cc' has not yet been persisted to the instance store..
Failed to Resume instance d2b19a41-985e-4dc4-8fd1-955df2cde243 via control endpoint net.pipe://jon-hp/Afis.Workflow/Import.xamlx/System.ServiceModel.Activities_IWorkflowInstanceManagement.\rException: System.ServiceModel.FaultException: The execution of the InstancePersistenceCommand named {urn:schemas-microsoft-com:System.Activities.Persistence/command}LoadWorkflow was interrupted by an error..
Failed to invoke service management endpoint at 'net.pipe://jon-hp/Afis.Workflow/ServiceManagement.svc' to activate service '/Afis.Workflow/ATP.xamlx'.\rException: 'There was an error reading from the pipe: Unrecognized error 109 (0x6d).'