2010-12-13 27 views
5

Tôi có quy trình làm việc WF4 với nhiều chức năng nhận.Nhiều hoạt động nhận trong WF4 không thành công khi tính năng kiên trì được bật

Luồng công việc chạy tốt cho đến khi tôi thêm kiên trì. Tôi tạo ra các bảng kiên trì và bổ sung sau vào \ cấu hình \ System.ServiceModel \ hành vi \ serviceBehaviors phần của web.config của tôi:

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

Các công việc chấp nhận một tham số đó là một thể hiện của một POCO WorkflowInstanceDTO Tôi có được xác định.

Khi tôi chạy workflow với đoạn mã sau

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

Nó thất bại trên dòng proxy.Create với các lỗi sau.

Khóa cá thể có giá trị '11e5cf14-c2a8-0fbf-d3b5-c12a91c174ff' đã tồn tại. Điều này có thể là do có nhiều MessageQuerySets được định nghĩa để đánh giá cùng một CorrelationKey.

Khi sự kiên trì không được bật, tôi không gặp lỗi này. Có ai nhìn thấy điều này không? Tôi đang làm gì sai?

Trả lời

1

Bạn có khởi tạo tương quan và các hoạt động nhận của bạn có tương quan trên cùng một khóa không? Bạn sẽ muốn đọc về tương quan dựa trên nội dung nếu bạn chưa có.

Thêm biến luồng công việc được gọi là "sharedHandle" của loại CorrelationHandle và trên Create call, initialize "sharedHandle" với "Query initialation initializer". Tài sản sẽ là một cái gì đó mà tất cả các cuộc gọi nhận được sẽ chấp nhận như là một đối số.

Các vấn đề liên quan