Каков наилучший способ получения сообщений об ошибках из рабочего процесса WF4 обратно в приложение ASP.NET MVC для хостинга? Мне нужно, чтобы рабочий процесс не прерывался, но продолжал быть активным, а затем передавал обратно в хост-приложение сообщение об ошибке, чтобы пользователь мог предпринять альтернативное действие, но я не уверен, как это сделать.
Чтобы поддерживать рабочий процесс, вам необходимо перехватить исключение в рабочем процессе. Добавьте действие TryCatch в рабочий процесс, и в блоке Catch вы можете использовать действие Send или настраиваемое действие для отправки данных в ведущее приложение.
Единственным исключением является использование исключения WorkflowApplication.OnUnhandledException с сохранением и указанием прерывания. В этом случае состояние рабочего процесса в памяти просто удаляется, и рабочий процесс может быть перезагружен для последнего сохраненного состояния. Если вы пойдете по этому пути, вам необходимо с помощью действия Perist убедиться, что ваш рабочий процесс сохраняется всякий раз, когда что-то не может быть переделано.
TryCatch на самом деле недостаточно, когда дело доходит до WF4. Кроме того, обработка события UnhandledException от вашего узла рабочего процесса на самом деле мало что говорит вам о том, какое действие не удалось и почему.
Предлагаемый подход - использовать TryCatch и отслеживание активности в WF4. Хорошее резюме этого можно найти здесь: http://msmvps.com/blogs/theproblemsolver/archive/2009/11/27/trycatch-activity-in-wf4.aspx
Вы можете расширить свой рабочий процесс host с отслеживающими участниками и обработчиком catch, который инкапсулирует вашу активность, которая может вызвать сбой, обрабатывать исключение и создавать новую TrackingRecord, которая может лучше проиллюстрировать, что произошло.