为什么在 AppFabric 中恢复挂起的工作流会出现错误

本文关键字:工作流 错误 挂起 AppFabric 恢复 为什么 | 更新日期: 2023-09-27 18:30:48

我正在使用Windows Server AppFabric运行几个WF 4服务。有时,工作流中会发生未经处理的异常,并且该异常会被放弃(如果对未处理的异常的操作设置为"放弃")或挂起(如果操作设置为"放弃并挂起")。

在"放弃"的情况下,工作流在异常后仍处于"正在运行(活动)"状态,我希望 AppFabric WorkflowManagementService 能够从其上一个持久点自动继续工作流。

在"放弃和挂起"的情况下,我希望能够通过 AppFabric 仪表板手动恢复工作流。

无论哪种情况,这都不会发生,但我在 AppFabric 仪表板和 Windows 事件查看器(Windows -> 应用程序服务器-系统服务 -> 管理员)中收到各种错误和警告消息:

错误:

无法在"net.pipe://jon-hp/Afis.Workflow/ServiceManagement.svc"处调用服务管理端点以激活服务"/Afis.Workflow/ATP.xamlx"。''r异常:"打开的操作未在分配的 00:01:00 超时内完成。分配给此操作的时间可能是较长超时的一部分。

错误:

无法通过控制端点 net.pipe://jon-hp/Afis.Workflow/ATP.xamlx/System.ServiceModel.Activities_IWorkflowInstanceManagement.''r异常:系统.超时异常:打开的操作未在分配的 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 也被放弃,但尚未持久化,因此从工作流 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).'

为什么在 AppFabric 中恢复挂起的工作流会出现错误

您是否通过任何更改对工作流定义进行了更改?如果是这样,WF4 无法处理,则将该功能添加到 WF4.5 中。

此外,我会在服务器上启用 WCF 跟踪,以查看您是否获得更多详细信息。通常,真正的原始异常会被记录下来,但不会传播到客户端。