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