System.FormatException:Guid应包含32个数字,包含4个破折号 - SiteCore

时间:2012-01-05 13:40:57

标签: sitecore sitecore6 sitecore-media-library

导致以下错误的原因是什么:

错误发生渲染错误:无法处理Xsl文件:abc.xslt(详细信息:System.FormatException:Guid应包含带有4个破折号的32位数字(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

3 个答案:

答案 0 :(得分:0)

我最近出现了已损坏的匿名配置文件 - 通过进入用户管理器并使用工具栏“重置”配置文件来修复。可能有帮助。

根据堆栈,我猜测数据库中缺少分配给您用户的一个角色组。

答案 1 :(得分:0)

这可能是因为您为此列设置了DataType:System.Guid 让我们检查:

  1. 打开数据源(在工具菜单中:数据/显示数据源)
  2. 检查您的错误列,这将与其他...
  3. 不同
  4. 打开服务器资源管理器(在工具菜单中:View / Server explorer,或 双击解决方案资源管理器中的数据库名称)
  5. 找到您的数据库表并在鼠标右键单击上下文菜单中找到:“edit table schema”
  6. 在那里找到您的列更改数据类型属性您想要的数据...单击确定...如果发生错误单击窗口左上方的刷新然后确定...
  7. 在解决方案资源管理器中双击YourDataSet,在出现的窗口中找到列表中有问题的列。
  8. 单击列名称并在属性Find DataType中,(我认为将编写System.Guid)将其更改为您的数据类型... 重新编译您的项目并使用。
  9. 第二个真正有效的方法是,检测哪个列有System.Guid DataType并删除它,替换为其他...

答案 2 :(得分:0)

即使它是一个不同的版本,也许其中一些会为你提供一些检查/尝试的想法:

  1. Sitecore 7.5(从7.2升级)
  2. 在7.2中,我们添加了一个管道处理器,以允许在数据源位置字段中查询(管道:Sitecore.Pipelines.GetRenderingDatasource.GetDatasourceLocation)。
  3. 升级到7.5后,我们意识到Sitecore已将此功能添加为7.5功能之一,因此我们遇到了代码冲突,其中一个是您在此帖中显示的错误。
  4. 我们的处理器代码只期望guid作为数据源值,而不是字符串路径。我们更新代码后,错误就消失了