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 ABC была создана без каких-либо проблем, но когда я отправил PAGE ABC, я столкнулся с 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. Рабочий процесс

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

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


person Marvin Glenn Lacuna    schedule 13.05.2016    source источник
comment
Я также столкнулся с той же проблемой после обновления. В моем случае глиняный планшет установлен в моем ядре сайта, и эта ошибка возникает, когда я отправляю рабочий процесс CT3 без добавления комментариев в поле для комментариев. В моем случае это связано с пользовательским рабочим процессом. Моя версия sitecore 8.1-U1.   -  person Mahendra Shekhawat    schedule 13.05.2016
comment
@marvin, когда вы проверяете элемент на вкладке «Сеть», имеет ли hdl строка запроса CommentEditor.aspx значение? Например /CommentEditor.aspx?hdl=8027C389F0DB4976909CB3981F9FDC7A   -  person Hishaam Namooya    schedule 13.05.2016
comment
@HishaamNamooya, обновленный экземпляр не имеет строки запроса ?hdl, когда я проверил вкладку сети. Я также проверил только что установленный экземпляр 8.1-U2, и он присутствовал. Я также дважды проверил физический файл, расположенный здесь: \sitecore\shell\Applications\Workbox, а файл CommentEditor.aspx для обновления и свежеустановленного экземпляра идентичен.   -  person Marvin Glenn Lacuna    schedule 16.05.2016
comment
@MahendraShekhawat, я нашел основную причину и исправление, см. мой ответ ниже. Надеюсь, это решит и вашу проблему.   -  person Marvin Glenn Lacuna    schedule 16.05.2016


Ответы (2)


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

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

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

Основная причина:

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

Решение:

Я изменил значение поля "Шаблон комментариев по умолчанию" с пустого на \Templates\System\Workflow\Standard Comment Template и снова протестировал его, и он работает.

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

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

person Marvin Glenn Lacuna    schedule 16.05.2016
comment
Это то, что я сделал, чтобы решить проблему. Но я удивлен, что он по умолчанию пуст в новом экземпляре Sitecore. - person Mahendra Shekhawat; 16.05.2016
comment
@MahendraShekhawat, приятно знать, что это работает и для вас. Я почти уверен, что это как-то связано с обновлением, я проверил только что установленный Sitecore v8.1-U2, и поля были заполнены правильно. - person Marvin Glenn Lacuna; 16.05.2016
comment
Я думаю, пришло время спросить sitecore об этом. :) - person Mahendra Shekhawat; 16.05.2016
comment
Не работает для меня. Это поле не пусто ни в одном из рабочих процессов моего экземпляра. Я все еще получаю сообщение об ошибке - person Jay; 17.01.2017

ОТРЕДАКТИРОВАНО Так как при изменении базы данных master рабочий процесс работает. Затем возникает проблема с предметами. Можете ли вы проверить, совпадает ли шаблон рабочего процесса с рабочим экземпляром.

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

person Hishaam Namooya    schedule 13.05.2016
comment
Спасибо за помощь. Однако в моем случае проблема связана с базой данных, я попытался изменить основную базу данных на новую установленную основную базу данных 8.1-U2, и она работает правильно. Я вернул основную базу данных, и проблема появляется снова. Я дважды проверил библиотеки DLL и другие файлы с помощью WinMerge, и я не вижу здесь какой-либо ошибочной основной причины. - person Marvin Glenn Lacuna; 16.05.2016