我一直在尝试使用在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);
该异常并未提供足够的信息来帮助解决此问题。任何帮助将不胜感激。
答案 0 :(得分:0)
我设法通过使用实例存储的重载来解决这个问题,我现在正在传递一个新的GUID。需要多了解一点。
handle = SqlStore.CreateInstanceHandle(Guid.NewGuid());