Я запустил и сохранил рабочий процесс, используя операции обмена сообщениями.Корреляция между начальной командой Start и конечной командой Stop работает хорошо, если они отправляются в течение нескольких секунд.Проблемы начинаются, когда рабочий процесс выгружается, потому что следующее сообщение Stop вызывает следующее FaultException:
Если LoadWorkflowByInstanceKeyCommand.AssociateLookupKeyToInstanceId не указан, LookupInstanceKey должен быть уже связан с экземпляром или LoadWorkflowByInstanceKeyПо этой причине недопустимо также указывать LookupInstanceKey в коллекции InstanceKeysToAssociate, если AssociateLookupKeyToInstanceId не установлен
Кто-нибудь может мне помочь?Переменные внутри рабочего процесса имеют типы int и XDocument.Это код для инициализации WorkflowServiceHost:
WorkflowServiceHost serviceHost = new WorkflowServiceHost(myWorkflow, new Uri(serviceUri));
ServiceDebugBehavior debug = serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
if (debug == null)
{
debug = new ServiceDebugBehavior();
serviceHost.Description.Behaviors.Add(debug);
}
debug.IncludeExceptionDetailInFaults = true;
WorkflowIdleBehavior idle = serviceHost.Description.Behaviors.Find<WorkflowIdleBehavior>();
if (idle == null)
{
idle = new WorkflowIdleBehavior();
serviceHost.Description.Behaviors.Add(idle);
}
idle.TimeToPersist = TimeSpan.FromSeconds(2);
idle.TimeToUnload = TimeSpan.FromSeconds(10);
var behavior = new SqlWorkflowInstanceStoreBehavior
{
ConnectionString = ConfigurationManager.ConnectionStrings["WorkflowPersistence"].ConnectionString,
InstanceEncodingOption = InstanceEncodingOption.None,
InstanceCompletionAction = InstanceCompletionAction.DeleteAll,
InstanceLockedExceptionAction = InstanceLockedExceptionAction.BasicRetry,
HostLockRenewalPeriod = new TimeSpan(00, 00, 30),
RunnableInstancesDetectionPeriod = new TimeSpan(00, 00, 05)
};
serviceHost.Description.Behaviors.Add(behavior);
serviceHost.Open();
Глядя на базу данных, кажется, что рабочий процесс никогда не приостанавливается.
Любая помощь приветствуется, спасибо