Sitecore: ошибка сервера в "/" приложении: пустые строки не допускаются. Имя параметра: handleId

Мой регрессионный тест идет по обновленному экземпляру Sitecore с 8.0-U3 до 8.1-U2. И один из этапов тестирования - проверка правильности работы рабочего процесса.

Поэтому я создал новый образец элемента с именем PAGE ABC (шаблон: /sitecore/templates/Sample/Sample Item) под /sitecore/content/home узел.

Рабочий процесс PAGE ABC - "Пример рабочего процесса" (шаблон: /sitecore/system/Workflows/Sample Workflow), который был предоставлен на только что установленном экземпляре Sitecore.

Азбука PAGE была создана без каких-либо проблем, но когда я отправил азбуку PAGE, я столкнулся с ArgumentException, показанным ниже:

Server Error in '/' Application.
________________________________________
Empty strings are not allowed.
Parameter name: handleId
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Empty strings are not allowed.
Parameter name: handleId

Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 

[ArgumentException: Empty strings are not allowed.
Parameter name: handleId]
   Sitecore.Diagnostics.Assert.ArgumentNotNullOrEmpty(String argument, String argumentName) +204
   Sitecore.Workflows.WorkflowUIHelper.ExtractFieldsFromFieldEditor(String handleId) +48
   Sitecore.Shell.Framework.Commands.Workflow.Run(ClientPipelineArgs args) +900

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +128
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +146
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +89
   Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) +313
   Sitecore.Web.UI.Sheer.ClientPage.ResumePipeline() +224
   Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) +825
   Sitecore.Shell.Applications.ContentManager.ContentEditorPage.OnPreRender(EventArgs e) +24
   System.Web.UI.Control.PreRenderRecursiveInternal() +197
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7763


________________________________________
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1073.0

Примечание. В этом случае все обязательные поля заполнены. Я также попытался оставить одно (1) обязательное поле пустым, но проблема не исчезла.

Я искал параметр ключевого слова 'handleId' на всем веб-сайте и обнаружил этот раздел в моей папке \temp _UpgradeHistory, которая, как я подозревал, как-то связана с вышеуказанной проблемой внутри Sitecore.Kernel.xml.

   <member name="M:Sitecore.Workflows.WorkflowUIHelper.ExtractFieldsFromFieldEditor(System.String)">
        <summary>
        Extract the field values set by the field editor
        </summary>
        <param name="handleId">The Id of the handle holding the return values from the field editor</param>
        <returns>A NameValueCollection containg the fields</returns>
    </member>

Я также пытался искать через Интернет, но я не нашел никакого относительного решения моей проблемы.

Отредактировано: я создал новый экземпляр Sitecore v.8.1-U2. Замените главную базу данных в ConnectionString.config экземпляра обновления, и действие отправки рабочего процесса сработает, затем я подключил обновленную основную базу данных и снова столкнулся с проблемой.

Отредактировано: я также заметил, что есть разница в диалоговом окне рабочего процесса. Это мало по сравнению с рабочим экземпляром, который является большим диалоговым окном. Смотрите поддерживающие скриншоты ниже:

Рисунок 1: Не работает рабочий процесс

Не работает рабочий процесс

Рисунок 2: Рабочий процесс

Рабочий процесс

Я опубликую более подробное расследование, когда получу новую информацию. Ценю любую помощь. Благодарю.

2 ответа

Я нашел исправление и первопричину.

Сначала я воссоздал проблему, создав новый рабочий процесс "ABC WORKFLOW" в / sitecore / system / Workflows, добавил необходимые действия, такие как "Черновик" и "Опубликованный", а затем создал новый шаблон и назначил "ABC WORKFLOW". Я также создал фактический элемент и попытался изменить рабочий процесс элемента с "Отправить на опубликованный". Ошибка появилась еще раз. (успешное тиражирование вопроса)

Затем я проделал тот же процесс для только что установленного экземпляра и не смог воспроизвести проблему.

Первопричина:

Поэтому я сравнил оба значения, и есть расхождение: поле "Шаблон комментария по умолчанию" было пустым (почему я так долго это выяснил), но оно существует в только что установленном экземпляре 8.1-U2.

Разрешение:

Я изменил значение поля Шаблон комментария по умолчанию с пустого на \Templates\System\Workflow\ Стандартный шаблон комментария и протестировал снова, и он работает.

Скриншот для удобной визуализации: Пример рабочего процесса с пустым полем Шаблон комментария по умолчанию

Возможно, вы также захотите обновить значение поля высоты комментария по умолчанию до 250, но это необязательно.

EDITED Поскольку при изменении основной базы данных рабочий процесс работает. Тогда проблема идет с пунктами. Можете ли вы проверить, совпадает ли шаблон рабочего процесса с рабочим экземпляром?

Путь /sitecore/templates/System/Workflow

Другие вопросы по тегам