启用持久性时,WF4中的多个接收活动失败

dgi*_*ard 5 workflow persistence workflow-foundation-4

我有一个具有多个接收功能的WF4工作流程.

工作流运行正常,直到我添加持久性.我创建了持久性表,并将以下内容添加到web.config的\ configuration\system.serviceModel\behaviors\serviceBehaviors部分:

    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true" />
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true" />
      <sqlWorkflowInstanceStore connectionStringName="InstanceStore"
        instanceCompletionAction="DeleteAll"
        instanceLockedExceptionAction= "NoRetry"
        instanceEncodingOption="None"
        hostLockRenewalPeriod="00:01:00" 
      />
    </behavior>
Run Code Online (Sandbox Code Playgroud)

工作流接受一个参数,该参数是我定义的WorkflowInstanceDTO POCO的实例.

当我使用以下代码运行工作流程时

    var wfi = new WFService.WorkflowInstanceDTO()
    {
        Id = 1,
        InstanceId = new Guid(),
        Description = "Awesome WFI",
        WorkflowId = 1
    };
    proxy.Create(wfi);
Run Code Online (Sandbox Code Playgroud)

它在proxy.Create行上失败,出现以下错误.

值"11e5cf14-c2a8-0fbf-d3b5-c12a91c174ff"的实例键已经存在.这可能是因为定义了多个MessageQuerySets,它们评估为相同的CorrelationKey.

如果未启用持久性,我不会收到此错误.有没有人见过这个?我究竟做错了什么?

The*_*ias 1

您是否初始化关联并且您的接收活动是否在同一密钥上关联?如果您还没有阅读过基于内容的相关性,您将会想要阅读。

添加 CorrelationHandle 类型的名为“sharedHandle”的工作流变量,并在 Create 调用中使用“查询相关初始值设定项”初始化“sharedHandle”。该属性是所有接收调用都会接受的参数。