SPWorkflowManager.CancelWorkflow(workflow) is not working with C# but works fine from PowerShell
PowerShell:
#cancelsiteworkflow
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
cls
$siteurl = “http://hcmsspd08/sites/ocrs”
$TestInstanceID = [GUID](“30637c86-2762-44c5-8e63-cb6fcb6eaa9b”) #guid from a Review
$web = Get-SPWeb $siteurl
$web.AllowUnsafeUpdates = $true
foreach ($workflow in $web.Workflows)
{
if ($workflow.InstanceId -ne $TestInstanceID)
{
}
else
{
$workflow.ParentAssociation.Name
foreach ($Task in $workflow.Tasks)
{
$Task[“Status”] = “Canceled”
$Task.Update();
}
[Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($workflow);
write-host -f green “–Workflow Terminated”
}
}
$web.Dispose();
C#
static void Main(string[] args)
{
var TestInstanceID = new Guid(“30637c86-2762-44c5-8e63-cb6fcb6eaa9b”);
try
{
SPSecurity.RunWithElevatedPrivileges(delegate ()
{
using (SPSite site = new SPSite(“http://hcmsspd08/sites/ocrs“))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates=true;
// stop site workflows
foreach (SPWorkflow workflow in web.Workflows)
{
if (workflow.InstanceId != TestInstanceID)
{
continue;
}
else
{
foreach (SPWorkflowTask t in workflow.Tasks)
{
t[“Status”] = “Canceled”;
t.Update();
}
SPWorkflowManager.CancelWorkflow(workflow);
}
}
}
}
});
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
}
}
ask gets cancelled in any case,
Could it RunElevatedPrivileges–I’m administrator in both cases.
No error in try/catch. The Guid is just a workflow instance I caputured from Nintex. collapse