У меня есть пользовательское действие рабочего процесса Sharepoint, созданное в Visual Studio, которое работает и правильно регистрируется в моей тестовой среде, но не работает в производственной среде с общим сообщением «Произошла ошибка» в списке истории рабочего процесса.
Чтобы отладить действие (так как удаленная отладка в рабочей среде является последним средством), я реализовал пошаговое ведение журнала в списке истории рабочего процесса, чтобы увидеть, в какой момент оно не удалось, только чтобы обнаружить, что оно кажется достижение состояния ошибки до того, как произойдет первая запись в журнал. Я использовал try-catch, чтобы перехватить исключение и записать его в список. По-прежнему нет входа в список истории.
На этом этапе регистрация выполнялась с использованием следующего кода:
SPWeb spWeb = (SPWeb)__Context.Web;
SPWorkflow.CreateHistoryEvent(spWeb, this.WorkflowInstanceId, 0, spWeb.CurrentUser, new TimeSpan(), "Update", "message here", string.Empty);
где spWeb - сеть Sharepoint Web контекста рабочего процесса. Еще раз, это работает в тесте.
Следующим шагом было использование обработки ошибок с общим типом Exception и действием Sharepoint LogToHistoryList. Нет кости. Я также попробовал опцию обработки ошибок, обозначенную http://www.sharepointsecurity.com/sharepoint/sharepoint-2007-development/fault-handling-in-sharepoint-workflows/, с тем же общим результатом «Произошла ошибка» и без других записей в списке «Журнал».
Итак, мои вопросы
1) Кто-нибудь знает, что может привести к тому, что обработчик ошибок не будет вызываться в производственной среде (и все же работать в тесте, если я программно выдаю ошибку)?
2) Есть ли что-нибудь еще, что я могу сделать, чтобы попытаться выяснить, где происходит сбой активности, без удаленной отладки действия?
Заранее спасибо!