2012-02-13 2 views
0

После выполнения некоторого рефакторинга моей службы WF4, я получил это исключение при вызове некоторых операций:Почему я получаю исключение «Выполнение InstancePersistenceCommand имени LoadWorkflowByInstanceKey было прервано из-за ошибками»

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

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

  • Receive1 (отсутствие корреляции, cancreateinstance = истина)
  • отправить ответ получить (инициализирует корреляцию контента на генерируемой ID)

  • receive2 (коррелирует с ID, cancreateinstance = ложь)

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

  • получить 3 (коррелирует на ID, cancreateinstance = false)

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

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

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

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

+0

Теперь я провел еще несколько тестов. Исключение приходит и уходит. Для некоторых экземпляров wf все вызовы проходят без ошибок, другие экземпляры терпят неудачу, обычно при получении3. – jonsb

+0

Я не уверен в верхней части головы, что вызывает проблему, - однако вы можете подумать о том, чтобы прочитать эту краткую статью в блоге, чтобы вы могли получить то, что я считаю самым удивительным журналом, доступным для WF (спасибо @Ron Jacobs !) http://blogs.msdn.com/b/rjacobs/archive/2011/12/16/troubleshooting-workflow-services-with-diagnostic-logging.aspx –

+0

@jonsb с той же проблемой ... но мой стойкий ... – Leonardo

ответ

1

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

+0

Я сомневаюсь. Я тестирую только несколько экземпляров wf и не использую никаких явных задержек. Кроме того, это не помогает повторить операцию. Кажется, что экземпляр однажды провалился, он будет продолжать сбой при последующих вызовах. Тем не менее, я не полностью понимаю объяснения Microsoft на этой странице ... – jonsb

+0

В примечании говорится: «Экземпляр загружается из-за истечения срока действия задержки или истекшей блокировки». У меня нет никаких задержек, но я не уверен в блокировках. Как и когда срок действия замков истекает? – jonsb

+0

Вы можете прочитать истечение срока действия, так как одновременно активируются две операции приема. – Maurice

0

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

0

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

SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(connStr); 

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

Смежные вопросы