工作流托管在WorkflowApplication中,中止持久性

时间:2013-08-04 21:55:11

标签: workflow-foundation-4 state-machine

我一直在尝试使用在WorkflowApplication中运行的长时间运行的状态机来解决一个有点间歇性的问题。我可以逐步完成工作流程,并按预期运行,按预期转换状态,然后到达书签,然后保留工作流程。但是,工作流程将中止,我收到以下消息:

InstancePersistenceCommand的执行被中断,因为所有者ID'ba26f4e9-f38b-4179-aa09-31ab9f8af337'的实例所有者注册已失效。此错误表示此所有者锁定的所有实例的内存中副本已过时,应与InstanceHandles一起丢弃。通常,最好通过重新启动主机来处理此错误。

Sql Instance存储初始化如下:

 SqlStore = new SqlWorkflowInstanceStore(ConfigurationManager.ConnectionStrings["SqlInstanceStore"].ConnectionString);
 SqlStore.HostLockRenewalPeriod = TimeSpan.FromSeconds(15);
 SqlStore.InstanceCompletionAction = InstanceCompletionAction.DeleteAll;
 handle = SqlStore.CreateInstanceHandle();
 InstanceView sqlView = SqlStore.Execute(handle, new CreateWorkflowOwnerCommand(), TimeSpan.FromSeconds(30));                   
 SqlStore.DefaultInstanceOwner = sqlView.InstanceOwner;
 WorkflowHost = new WorkflowApplication(WorkflowDefinition, inputs);
 WorkflowHost.Run();

创建书签:

context.CreateBookmark(bkmk, OnResume);

该异常并未提供足够的信息来帮助解决此问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我设法通过使用实例存储的重载来解决这个问题,我现在正在传递一个新的GUID。需要多了解一点。

 handle = SqlStore.CreateInstanceHandle(Guid.NewGuid());