2011-06-16 38 views
0

错误: InstancePersistenceCommand的执行被中断,因为实例'42ca66e7-35e3-462e-9594-a98ee009d2e2'尚未保存到实例商店。在长时间运行的工作流服务上调用操作(接收活动)时出现WF4错误

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

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

任何想法,为什么我有这个问题?

更新

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

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

+0

您是否在Windows Server AppFabric或vanilla IIS下托管? – 2011-06-16 20:54:07

+0

香草IIS。其实我还没有部署,我正在开发使用IIS Express和SSL。 – 2011-06-16 21:10:50

+0

您是否在机器上的事件日志中看到任何内容 - 例如可能会显示SerializationException? – 2011-06-17 18:46:19

回答

0

我发现序列化因为工作流中使用的某些类型的某些问题而中断。

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

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

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

相关问题