1

我正在使用 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).'

4

1 回答 1

0

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

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

于 2012-04-13T08:48:13.677 回答