2010-12-13 4 views
5

Mam przepływ pracy WF4 z wieloma funkcjami odbierania.Wiele działań odbierania w WF4 kończy się niepowodzeniem po włączeniu trwałości

Przepływ pracy działa poprawnie, dopóki nie dodasz trwałości. Stworzyłem tabele utrwalania i dodaje następujące konfiguracji \ \ system.serviceModel \ zachowań \ serviceBehaviors odcinek mojego web.config:

<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> 

Workflow przyjmuje parametr, który jest instancją WorkflowInstanceDTO POCO mam określone.

Kiedy uruchomić przepływ pracy z następującego kodu

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

To nie na linii proxy.Create z następującym błędem.

Klucz wystąpienie wartości '11e5cf14-c2a8-0fbf-d3b5-c12a91c174ff' już istnieje. Może to wynikać z faktu, że zdefiniowano wiele definicji MessageQuerySets, które mają tę samą wartość CorrelationKey.

Gdy utrwalanie nie jest włączone, nie otrzymuję tego błędu. Czy ktoś to widział? Co ja robię źle?

Odpowiedz

1

Czy zainicjujesz korelację i czy twoje działania odbioru korelują na tym samym kluczu? Będziesz chciał przeczytać o korelacji zależnej od treści, jeśli jeszcze tego nie zrobiłeś.

Dodaj zmienną przepływu pracy o nazwie "sharedHandle" typu CorrelationHandle, a podczas tworzenia połączenia zainicjuj "sharedHandle" za pomocą "inicjalizatora korelacji zapytań". Właściwość będzie czymś, co wszystkie odbierane połączenia przyjmą jako argument.

Powiązane problemy