C# Sitecore工作流命令抛出一个;找不到命令定义“;错误

C# Sitecore工作流命令抛出一个;找不到命令定义“;错误,c#,workflow,sitecore,C#,Workflow,Sitecore,在下面的代码中,以下行 WorkflowResult result = wf.Execute(SitecoreItems.MediaWorkflowApproveCommand, item, "", false); 正在抛出一个找不到命令定义的错误。ID和所有其他属性都有效,但命令定义无效 你知道是什么引起的吗 using (new SecurityDisabler()) { // Find all related items

在下面的代码中,以下行

WorkflowResult result = wf.Execute(SitecoreItems.MediaWorkflowApproveCommand, item, "", false); 
正在抛出一个
找不到命令定义的错误。ID和所有其他属性都有效,但命令定义无效

你知道是什么引起的吗

using (new SecurityDisabler())
            {
                // Find all related items 
                ItemLink[] itemLinks = dataItem.Links.GetValidLinks();
                foreach (ItemLink link in itemLinks)
                {
                    Item item = link.GetTargetItem();
                    // publishing related media items - the ones that were referenced by the workflow item 
                    // this can be extended - you can publish related aliases also 
                    if (item != null && item.Paths.IsMediaItem)
                    {
                        //push field to the next state
                        IWorkflow wf = item.Database.WorkflowProvider.GetWorkflow(item);
                        WorkflowResult result = wf.Execute(SitecoreItems.MediaWorkflowApproveCommand, item, "", false);
                    }
                }
            }

如果该项不处于任何工作流状态,或者该项所处的工作流状态没有ID等于作为参数传递的命令ID的子项,则会引发此异常

尝试执行以下代码:

if(item.Database.Name==“web”)
{
抛出新异常(“无法在web数据库中执行工作流命令”);
}
if(String.IsNullOrEmpty(项[fieldid.WorkflowState]))
{
抛出新异常(“未为项目设置工作流状态”);
}
Item stateItem=ItemManager.GetItem(wf.GetState(Item),Language.Current,Version.Latest,Item.Database,SecurityCheck.Disable);
if(stateItem==null)
{
抛出新异常(“工作流状态”+项[FieldId.WorkflowState]+”不是“+wf.WorkflowID+”工作流”的一部分);
}
if(stateItem.Axes.GetChild(ID.Parse(SitecoreItems.MediaWorkflowApproveCommand))==null
{
抛出新异常(“工作流状态”+stateItem.ID+”没有ID为“+SitecoreItems.MediaWorkflowApproveCommand”的子命令);
}
在执行命令行之前

WorkflowResult=wf.Execute(SitecoreItems.MediaWorkflowApproveCommand,项“”,false);

这只是在抑制错误。我希望通过消除错误使其正常工作。如果执行我编写的代码,您将看到此异常的原因WF.GetStateItem不是有效的函数。是GetState函数吗?代码已更新,因此不使用自定义扩展类和异常消息中包含的更多信息。