0

我在工作流的开头放置了一个 InitializeCorrelation 活动,然后我想关联不同的键,所以我用不同的键放置了另一个 InitializeCorrelation 活动,但我收到此错误:

InstancePersistenceCommand 的执行被中断,因为实例键“a765c209-5adc-4f03-9dd2-1af5e33aab3b”未与实例关联。这可能是因为实例或密钥已被清理,或者因为密钥无效。如果生成密钥的消息在错误的时间发送或包含不正确的相关数据,则密钥可能无效。

那么,是否可以在工作流启动后更改相关性?

4

2 回答 2

0

要明确回答这个问题,是的,您可以更改相关性所基于的数据。您不仅可以在序列中执行此操作,还可以在并行活动的每个分支中使用不同的相关数据。可以使用 InitializeCorrelation 或 SendReply 活动来初始化相关性,如下所述:http: //msdn.microsoft.com/en-us/library/ee358755 (v=vs.100).aspx 。

由于工作流设计器不是 Visual Studio 最强大的部分(从不检查 XPath 查询,有时甚至构建错误也不会反映在活动上等),通常问题所在并不总是很明显。所以,我建议如下:

  • 使用关联类型仅初始化一次 CorrelationHandle查询特定关联数据的关联
  • 为不同的相关数据初始化一个新的 CorrelationHandle 实例
  • 初始化 CorrelationHandle 后,以后可以多次将其用于不同的 Receive 活动(Receive.CorrelatesOn、Receive.CorrelatesWith)
  • 如果关联不起作用,则可能是因为错误的 XPath 查询。如果 OperationName 或参数的名称发生更改,这些不会自动刷新。建议重命名后重新生成它们
  • 在测试时关闭工作流持久性和 NLB 可能是个好主意 - 让自己专注于与相关性相关的问题
于 2014-12-31T13:44:57.023 回答
0

查看存储持久实例的数据库中的 Instances 表。其中一个条目可能具有暂停状态,还有一个包含一些错误描述的列。是什么导致了这个错误?您是否对工作流程进行了一些更改并进行了部署?

于 2013-09-01T19:03:17.740 回答