在长时间运行的工作流服务上调用操作(接收活动)时出现WF4错误

时间:2011-06-16 20:30:58

标签: .net wcf workflow-foundation workflow-foundation-4

错误: InstancePersistenceCommand的执行被中断,因为实例'42ca66e7-35e3-462e-9594-a98ee009d2e2'尚未持久保存到实例存储。

当我在已从内存中卸载的现有工作流实例上调用第二个接收活动时,会发生这种情况。如果实例仍在内存中,我没有问题。等待1分钟或停止调试器后,实例将被卸载。

我可以在System.Activities.DurableInstancing.InstancesTable表中看到一条ID为42CA66E7-35E3-462E-9594-A98EE009D2E2的记录。

知道我为什么遇到这个问题?

更新

似乎我的工作流状态没有被持久化和/或持久性没有正常发生。 Here's is a workflow instance record in the System.Activities.DurableInstancing.InstancesTable table.只是我或者我应该在那里看到一些序列化状态吗?

如果我在我的工作流程中使用未标记为[Serializable]的类并试图保留它会发生什么?

1 个答案:

答案 0 :(得分:0)

我发现由于工作流程中使用的某些类型存在一些问题,序列化正在中断。

第一个问题是我用[DataMember]标记了一个没有set访问器的属性。在删除属性之前,NetDataContractSerializer无法序列化该类型。

第二个问题是我有一个IEnumerable类型的工作流变量,显然没有标记为Serializable或DataContract。我不知道当我这样做时我在想什么。

在了解WorkflowServiceTraceBehavior on Ron Jacobs blog后,很容易发现这些问题。