[英]ExecutionEngineException for canceling my SharePoint 2013 Workflow
我正在使用SharePoint 2013,VS2013和工作流引擎4.5。 我有一个自定义的“应用程序”页面,可用于工作流流程的下一步。 此页面上的按钮之一是取消按钮。 当我的用户单击此按钮时,我将使用ajax调用我的MVC Web应用程序。 我的MVC5.0应用程序首先更新Entity Framework数据库记录,然后尝试取消工作流程。
下面是我的MVC代码。 为什么我在此行得到ExecutionEngineException错误clientContext.Load(instances); 注意:如果采用以下代码并将其复制到控制台应用程序,则可以正常工作!
//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);
}
}
任何帮助,将不胜感激。
马雷克:
我已经与Microsoft(MS)开了一个案子。 他们最初的回答是,他们知道SharePoint和MVC5的安全性和其他问题。 我尝试使用SharePoint WCF服务项目广告获得了相同的结果。 我会让您知道MS响应时的发现。 至于Fiddler,我尝试了一下,但是并没有告诉我太多,或者也许我没有正确解释结果。 我真的以为我是否提供了明确的凭据(与可以使用的控制台应用程序相同),但是却出现了相同的错误。
我发现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);
}
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.