Почему я получаю исключение «Выполнение InstancePersistenceCommand с именем LoadWorkflowByInstanceKey было прервано из-за ошибки» - PullRequest
0 голосов
/ 13 февраля 2012

После некоторого рефакторинга моей службы WF4 я получил это исключение при вызове некоторых операций:

The execution of the InstancePersistenceCommand named {urn:schemas-microsoft-com:System.Activities.Persistence/command}LoadWorkflowByInstanceKey was interrupted by an error.

В моем файле xamlx есть несколько пар receive / sendreplytoreceive, так какпоказано ниже.Исключение иногда происходит при получении2, иногда при получении3.

  • receive1 (без корреляции, cancreateinstance = true)
  • отправка ответа на получение (инициализация корреляции содержимого на сгенерированном ID)

  • receive2 (коррелирует по ID, cancreateinstance = false)

  • отправить ответ для получения

  • receive3 (коррелирует по идентификатору, cancreateinstance = false)

  • отправить ответ на получение

После выполнения отладки и проверки всех корреляций там, где установлено правильно, исключениеисчезли для новых экземпляров рабочего процесса.

Что означает исключение, и почему оно появилось и почему оно внезапно исчезло?Это проблема кода / xamlx или что-то с инфраструктурой (AppFabric / SQL)?

Я размещаю службу WF с IIS / AppFabric, используя постоянство SQL AppFabric.

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Согласно этому примечанию поддержки эта ошибка может быть результатом условия гонки между истечением действия приема и задержки. Возможно ли это в вашем рабочем процессе.

0 голосов
/ 03 марта 2016

Когда у меня возникла эта проблема, в моей строке подключения оказалась ошибка при создании экземпляра объекта хранилища постоянных данных.

SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(connStr);

Я понимаю, что это старый вопрос, но исправление строки подключения избавило меняошибка при запуске store.Execute(), поэтому я решил поделиться!

0 голосов
/ 01 февраля 2013

Я вроде понял, что ... очевидно, если вы укажете свое хранилище персистенции в SQL до 2012 года, вы получите ошибку ... так что все, что мне нужно было сделать, это поместить мое хранилище персистенции в SQL 2012 ...

...