尝试在工作箱中显示用户创建的工作流程时遇到此异常。
Empty string is not allowed.
Parameter name: value.
Actual value was .
跟踪如下。
[ArgumentOutOfRangeException: Empty string is not allowed.
Parameter name: value.
Actual value was .]
Sitecore.Diagnostics.Error.AssertString(String argument, String name, Boolean allowEmpty) +136
Sitecore.Shell.Framework.CommandBuilders.CommandBuilder.Add(String key, String value) +42
Sitecore.Shell.Applications.Workbox.WorkboxForm.CreateCommand(IWorkflow workflow, WorkflowCommand command, Item item, XmlControl workboxItem) +280
Sitecore.Shell.Applications.Workbox.WorkboxForm.CreateItem(IWorkflow workflow, Item item, Control control) +1758
Sitecore.Shell.Applications.Workbox.WorkboxForm.DisplayState(IWorkflow workflow, WorkflowState state, DataUri[] items, Control control, Int32 offset, Int32 pageSize) +167
Sitecore.Shell.Applications.Workbox.WorkboxForm.DisplayStates(IWorkflow workflow, XmlControl placeholder) +654
Sitecore.Shell.Applications.Workbox.WorkboxForm.DisplayWorkflow(IWorkflow workflow) +439
Sitecore.Shell.Applications.Workbox.WorkboxForm.Pane_Toggle(String id) +141
起初我认为工作流程中的某些项目没有设置状态值,因此我更正了问题并且问题仍然存在。
Sitecore版本为7.0(rev.130918)
这个工作流程没有什么特别之处,只有标准的三种状态,包括电子邮件提醒和自动发布。我认为这只是标准工作流程与新名称的直接重复。
我投入生产后进入这个项目的时间已经很晚了,所以我仍然可以发现设置有些奇怪。
答案 0 :(得分:2)
问题在于流程的CreateItem
步骤。本质上,它试图创建一个新的Item,但运行规则来反对Item的命名。
"实际值为。"实际上是指针对建议的Item名称运行的正则表达式是空字符串,而不是句号。
解决方案是确认web.config中的以下设置具有这些(或类似的)值,如果没有添加值。
<setting name="InvalidItemNameChars" value="\/:?"<>|[]" />
<setting name="ItemNameValidation" value="^[\w\*\$][\w\s\-\$]*(\(\d{1,}\)){0,1}$" />
通常会删除它们以使用包含这些字符的项目上传包,但忘记撤消更改的步骤。
答案 1 :(得分:1)
真的不是答案:我和@wardey在同一个项目上工作,这可能有助于说明问题所在? 不允许使用Workbox空字符串只有在用户设置为管理员时才会出现错误。 我将“用户管理员”设置为关闭,我可以看到工作流程。
答案 2 :(得分:0)
请参阅CreateCommand类的代码:
private void CreateCommand(IWorkflow workflow, WorkflowCommand command, Item item, XmlControl workboxItem)
{
Assert.ArgumentNotNull(workflow, "workflow");
Assert.ArgumentNotNull(command, "command");
Assert.ArgumentNotNull(item, "item");
Assert.ArgumentNotNull(workboxItem, "workboxItem");
XmlControl webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
Assert.IsNotNull(webControl, "workboxCommand is null");
webControl["Header"] = command.DisplayName;
webControl["Icon"] = command.Icon;
CommandBuilder builder = new CommandBuilder("workflow:send");
builder.Add("id", item.ID.ToString());
builder.Add("la", item.Language.Name);
builder.Add("vs", item.Version.ToString());
builder.Add("command", command.CommandID);
builder.Add("wf", workflow.WorkflowID);
builder.Add("ui", command.HasUI);
builder.Add("suppresscomment", command.SuppressComment);
webControl["Command"] = builder.ToString();
workboxItem.AddControl(webControl);
}
添加到builder.Add()
行的其中一个值为空。似乎您的工作流程命令中存在一些配置错误。
希望这有助于让你朝着正确的方向前进。