我有一个运行工作流的Windows服务。这些工作流是从数据库(用户可以使用重新托管的设计师定义自己的工作流)加载的XAML文件。它配置了一个 SQLWorkflowInstanceStore 实例,以在进入空闲状态时持久化工作流(基本上是从Microsoft的WCF/WF示例中的\ControllingWorkflowApplications示例代码派生而来)。
但有时会出现以下错误: System.Runtime.DurableInstancing.InstanceOwnerException:由于所有由此所有者锁定的实例的内存副本已过期并且应该与InstanceHandles一起丢弃,因此中断了InstancePersistenceCommand的执行,因为所有者ID“a426269a-be53-44e1-8580 -4d0c396842e8”的实例所有者注册变得无效。通常,最好通过重新启动主机来处理此错误。
我一直在努力找出原因,但在开发中很难复现,在生产服务器上,我偶尔会遇到此问题。我发现一个提示:当我查看LockOwnersTable时,我发现LockOnwersTable lockexpiration设置为01/01/2000 0:0:0,不再更新,而在正常情况下,应根据主机锁续订周期每x秒更新一次。
那么,为什么SQLWorkflowInstanceStore停止更新此LockExpiration,并如何检测其原因?
但有时会出现以下错误: System.Runtime.DurableInstancing.InstanceOwnerException:由于所有由此所有者锁定的实例的内存副本已过期并且应该与InstanceHandles一起丢弃,因此中断了InstancePersistenceCommand的执行,因为所有者ID“a426269a-be53-44e1-8580 -4d0c396842e8”的实例所有者注册变得无效。通常,最好通过重新启动主机来处理此错误。
我一直在努力找出原因,但在开发中很难复现,在生产服务器上,我偶尔会遇到此问题。我发现一个提示:当我查看LockOwnersTable时,我发现LockOnwersTable lockexpiration设置为01/01/2000 0:0:0,不再更新,而在正常情况下,应根据主机锁续订周期每x秒更新一次。
那么,为什么SQLWorkflowInstanceStore停止更新此LockExpiration,并如何检测其原因?