System.FormatException: Guid должен содержать 32 цифры с 4 дефисами — SiteCore

Что вызывает следующую ошибку:

ОШИБКА Произошла ошибка рендеринга: не удалось обработать файл Xsl: abc.xslt (подробности: System.FormatException: Guid должен содержать 32 цифры с 4 дефисами (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

(Для справки: использование Sitecore 6.4)

Может кто-нибудь мне помочь?

Изменить: похоже на проблему с разрешением. Работает нормально, когда я вошел в систему, но ломается для анонимности. Обновлено с трассировкой стека:

[FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).]
   System.Guid..ctor(String g) +2486
   Sitecore.Data.ID..ctor(String id) +65
   Sitecore.Data.ID.Parse(String value) +42
   Sitecore.SecurityModel.SecurityAssignments.LoadData() +240
   Sitecore.SecurityModel.SecurityField.get_Assignments() +194
   Sitecore.SecurityModel.SecurityField.GetRights(Domain domain, ID entityID) +139
   Sitecore.Shell.Web.UI.WebControls.SecurityTreeview.GetTreeNode(Item item, Control parent) +817
   Sitecore.Web.UI.HtmlControls.DataTreeview.Populate(DataContext dataContext, Control control, Item root, Item folder, String selectedIDs) +452
   Sitecore.Web.UI.HtmlControls.DataTreeview.Populate(DataContext dataContext, Control control, Item root, Item folder, String selectedIDs) +335
   Sitecore.Web.UI.HtmlControls.DataTreeview.Populate(Control control, DataContext dataContext) +440
   Sitecore.Web.UI.HtmlControls.DataTreeview.Populate(Control control, Int32 depth) +82
   Sitecore.Web.UI.HtmlControls.DataTreeview.OnLoad(EventArgs e) +758
   Sitecore.Shell.Web.UI.WebControls.SecurityTreeview.OnLoad(EventArgs e) +31
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

person 4u.Ans    schedule 05.01.2012    source источник
comment
У вас есть код? Похоже, вы присваиваете свойству ID значение, отличное от идентификатора.   -  person Jay S    schedule 05.01.2012


Ответы (3)


Недавно у меня были случаи повреждения анонимных профилей, которые можно исправить, зайдя в диспетчер пользователей и «сбросив» профиль с помощью панели инструментов. Может помочь.

Основываясь на стеке, я предполагаю, что одна из групп ролей, назначенных вашему пользователю, отсутствует в базе данных.

person Richard Hauer    schedule 09.04.2012

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

  1. Sitecore 7.5 (обновлено с 7.2)
  2. В версии 7.2 мы добавили обработчик конвейера, чтобы разрешить запросы в поле местоположения источника данных (конвейер: Sitecore.Pipelines.GetRenderingDatasource.GetDatasourceLocation).
  3. После обновления до версии 7.5 мы поняли, что Sitecore добавил эту возможность в качестве одной из функций версии 7.5, поэтому у нас возникли конфликты кода, одним из которых была ошибка, показанная в этом посте.
  4. Код нашего процессора ожидал только guid в качестве значения источника данных, а не строкового пути. Как только мы обновили наш код, ошибка исчезла.
person jrodsmitty    schedule 30.03.2015

Возможно, это происходит из-за того, что вы установили для этого столбца DataType: System.Guid. Давайте проверим:

  1. Открыть источники данных (в меню инструментов: Данные/Показать источники данных)
  2. Проверьте свой столбец ошибок, он будет отличаться от других...
  3. Откройте обозреватель серверов (в меню инструментов: Просмотр/Обозреватель серверов или дважды щелкните имя вашей базы данных в обозревателе решений)
  4. Найдите свою таблицу базы данных и в контекстном меню правой кнопки мыши найдите: «редактировать схему таблицы»
  5. Найдите там свой столбец, измените свойство типа данных, какие данные вы хотите... нажмите "ОК"... если произойдет ошибка, нажмите "Обновить" в верхней левой части окна, а затем "ОК"...
  6. Дважды щелкните YourDataSet в обозревателе решений и в появившемся окне найдите проблемный столбец в списке.
  7. Нажмите на имя столбца и в свойствах Find DataType, (там я думаю будет написано System.Guid) измените его на свой тип данных... Перекомпилируйте свой проект и пользуйтесь.

Второй и действительно рабочий метод: определить, какой столбец имеет System.Guid DataType, и удалить его, заменить другим...

person zviad    schedule 09.03.2013
comment
это не имеет отношения к заданному вопросу - person Egli Becerra; 29.05.2020