0

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

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

Sql Instance store 初始化如下:

 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);

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

4

1 回答 1

0

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

 handle = SqlStore.CreateInstanceHandle(Guid.NewGuid());
于 2013-08-04T22:45:58.337 回答