2012-04-05 43 views
10

Tôi đang cố gắng tìm cách nâng cấp các cụm được sử dụng bởi thời gian chạy công việc của chúng tôi (hoạt động tùy chỉnh) trong khi vẫn có thể tải (deserialize) phiên bản cũ. tình hình của tôi là như thế này:Đang tải các phiên bản trước đó với phiên bản mới

  1. có một trường hợp công việc tạo ra và vẫn kiên trì với CustomActivities v.1.0.0.0
  2. triển khai một phiên bản mới của phù thủy sản phẩm có CustomActivities v.2.0.0.0
  3. cố gắng tải luồng công việc trước đó trong thời gian chạy mới

Sự khác biệt giữa v.1 và v.2 là chúng tôi có một số lớp bổ sung trong hội đồng. Cấu trúc cho các kiểu hiện có đã không thay đổi vì vậy tôi sẽ giả định rằng quá trình deserialization nhị phân sẽ vẫn hoạt động. Chúng tôi đang chuyển hướng tất cả các loại từ v.1 để v.2 sử dụng AssemblyResolve kiện

if (args.Name.Contains("CustomActivities")) 
{ 
    Type someTypeFromCustomActivities = typeof(WorkflowType); 
    return someTypeFromCustomActivities.Assembly; 
} 

Tuy nhiên, tại một số điểm trong quá trình deserialization chúng tôi đang nhận được ngoại lệ sau đây:

SerializationException: Các đối tượng với ID 153 thực hiện giao diện IObjectReference mà tất cả các phụ thuộc không thể được giải quyết. Nguyên nhân có khả năng là hai trường hợp của IObjectReference có sự phụ thuộc lẫn nhau vào nhau.

Điều gì có thể gây ra hành vi này và cách chúng tôi có thể làm việc với nó? Ngoài ra nếu có ai có chiến lược nâng cấp luồng công việc không liên quan đến việc chạy các hội đồng bên cạnh (phiên bản cũ và mới trong cùng một miền ứng dụng), chúng sẽ được hoan nghênh.

+0

Blog này nói: > Kiểm tra xem bạn đã thay đổi công việc của bạn (tạo ra một số trạng thái mới chẳng hạn), nếu có thì kiểm tra xem cơ sở dữ liệu kiên trì của bạn có bất cứ khăng khăng công việc trong đó. nếu nó có vấn đề của bạn có thể có bởi vì các công việc không thể được tuần tự một lần nữa. > @AZ Đây có phải là trường hợp của bạn không? http://brazeta.wordpress.com/2012/01/12/vs-2010-test-assert-inconclusive-exception/ – sethcall

+1

Cấu trúc lớp/công việc không thay đổi một chút. Ngoài ra tôi có thể không chỉ xóa các dữ liệu tồn tại bởi vì đó có nghĩa là tôi mất hoạt động quy trình sản xuất hoạt động –

Trả lời

2

Sự kiện giải quyết lắp ráp không có gì để thay đổi các tham chiếu lắp ráp loại được tuần tự hóa. Bạn đã thử chuyển hướng ràng buộc lắp ráp ở cấp máy từ v1 đến v2 chưa.

Cập nhật: Tôi đã tìm thấy liên kết này nói về việc sử dụng chuyển hướng ràng buộc để chuyển tiếp luồng công việc cũ sang phiên bản mới bằng thuộc tính appliesTo.

http://msdn.microsoft.com/en-us/library/aa349375.aspx

+0

xử lý giải quyết hội đồng có chính xác cùng một hiệu ứng như chuyển hướng cấu hình. Về lý thuyết, dữ liệu cũ phải phù hợp với các kiểu mới vì không có gì thay đổi trong cấu trúc của chúng nhưng vẫn còn thời gian chạy công việc thất bại với ngoại lệ trên. Tôi đang cố gắng nhận được một số lời khuyên từ những người đã gặp vấn đề này trước đây và cách họ nghĩ ra một giải pháp nếu có. –

+0

- 1 không phải là câu trả lời. điều này có thể là một bình luận tốt đẹp mặc dù –

+0

Tôi đã ở sân bay trong khi tôi đang viết điều này trên điện thoại của tôi, vì vậy tôi xin lỗi vì ngắn gọn và thiếu rõ ràng và có câu trả lời sai chỗ. –

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