ExecutionEngineException для отмены моего рабочего процесса SharePoint 2013
Я использую SharePoint 2013, VS2013 и Workflow Engine 4.5. У меня есть пользовательская страница приложения, которую я использую для следующего шага в моем рабочем процессе. Одна из кнопок на этой странице - кнопка отмены. Когда мои пользователи нажимают эту кнопку, я использую ajax для вызова своего веб-приложения MVC. Мое приложение MVC5.0 Сначала я обновляю свою запись базы данных Entity Framework, а затем пытаюсь отменить рабочий процесс.
Ниже мой код MVC. Почему я получаю сообщение об ошибке ExecutionEngineException в этой строке clientContext.Load(instance); Примечание: если взять приведенный ниже код и скопировать его в консольное приложение, оно работает!
//cancel the workflow
ClientContext clientContext = new ClientContext(baseUrl);
WorkflowServicesManager wfsm = new WorkflowServicesManager(clientContext, clientContext.Web);
WorkflowInstanceService instanceService = wfsm.GetWorkflowInstanceService();
WorkflowInstanceCollection instances = instanceService.EnumerateInstancesForListItem(listId, itemId);
**clientContext.Load(instances);**
clientContext.ExecuteQuery();
foreach (WorkflowInstance instance in instances)
{
if (instance.Id == new Guid(instanceId))
{
instanceService.CancelWorkflow(instance);
}
}
Любая помощь будет оценена.
2 ответа
Я обнаружил, что код CSOM (выше) необходимо заменить следующим кодом. Примечание: мне также пришлось запустить следующий код с повышенными привилегиями.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(baseUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Documents"];
Microsoft.SharePoint.WorkflowServices.WorkflowServicesManager wsm = new Microsoft.SharePoint.WorkflowServices.WorkflowServicesManager(web);
Microsoft.SharePoint.WorkflowServices.WorkflowInstanceService service = wsm.GetWorkflowInstanceService();
var instances = service.EnumerateInstancesForListItem(gPageList, pageID);
foreach (var instance in instances)
{
service.CancelWorkflow(instance);
}
}
}
});
Марек:
Я открыл дело с Microsoft (MS). Первоначальный ответ, который они дали, - это то, что они знают о безопасности и других проблемах с SharePoint и MVC5. Я попытался использовать проект службы WCF SharePoint, и получил тот же результат. Я дам вам знать, что я узнаю, когда MS ответит. Что касается Fiddler, я попробовал это, но это мне мало что говорило, или, может быть, я неправильно интерпретировал результаты. Я действительно думал, если я предоставил явные учетные данные (так же, как консольное приложение, которое работает), но получил ту же ошибку.