Sitecore:值不能为空。参数名称:uri
Sitecore: Value cannot be null. Parameter name: uri
Exception: System.ArgumentNullException
Message: Value cannot be null.
Parameter name: uri
Source: Sitecore.Kernel
我正在本地编辑一个占位符项目
Sitecore 8.1(修订版 151207)实例时出现此错误。现在我无法编辑、删除或重置它(或其父文件夹)。我也无法阅读内容编辑器中的项目,因为当我单击父文件夹时会弹出错误。我已经尝试 deleting/editing 它,它是内容编辑器中的父文件夹,通过代码和 PowerShell 命令,但始终显示相同的错误。
我也试过用我的备份副本替换我的配置和 bin 文件夹、清除缓存、重新启动 IIS 和应用程序池,但没有任何帮助。
我完全卡住了。有谁知道如何解决这个问题?
编辑:
日志中的完整错误是:
Exception: System.ArgumentNullException
Message: Value cannot be null.
Parameter name: uri
Source: Sitecore.Kernel
at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument, String argumentName)
at Sitecore.Data.ItemUri..ctor(ItemUri uri)
at Sitecore.Data.Items.Item.GetItemUriFromSourceItem()
at Sitecore.Data.Items.Item.get_SourceUri()
at Sitecore.Data.Items.Item.get_Source()
at Sitecore.Data.Fields.Field.GetSourceItem()
at Sitecore.Data.Fields.Field.GetInheritedValue(Boolean allowStandardValue)
at Sitecore.Pipelines.GetFieldValue.GetInheritedValue.Process(GetFieldValueArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Data.Fields.Field.GetValue(Boolean allowStandardValue, Boolean allowDefaultValue, Boolean allowFallbackValue, Boolean allowInheritValue, Boolean allowInnerValue)
at Sitecore.Pipelines.ItemProvider.GetItem.GetLanguageFallbackItem.IsItemFallbackEnabled(Item item)
at Sitecore.Pipelines.ItemProvider.GetItem.GetLanguageFallbackItem.Process(GetItemArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Data.Managers.PipelineBasedItemProvider.ExecuteAndReturnResult[TArgs,TResult](String pipelineName, String pipelineDomain, Func`1 pipelineArgsCreator, Func`1 fallbackResult)
at Sitecore.Data.Managers.ItemManager.GetItem(ID itemId, Language language, Version version, Database database, SecurityCheck securityCheck)
at Sitecore.Nexus.Data.DataCommands.GetChildrenCommand.Execute(Item )
at Sitecore.Data.Engines.EngineCommand`2.Execute()
at Sitecore.Data.Managers.ItemProvider.GetChildren(Item item, ChildListOptions options)
at Sitecore.Data.Managers.ItemProvider.GetChildren(Item item, SecurityCheck securityCheck, ChildListOptions options)
at Sitecore.Data.Managers.PipelineBasedItemProvider.ExecuteAndReturnResult[TArgs,TResult](String pipelineName, String pipelineDomain, Func`1 pipelineArgsCreator, Func`1 fallbackResult)
at Sitecore.Data.Managers.PipelineBasedItemProvider.GetChildren(Item item, SecurityCheck securityCheck)
at Sitecore.Collections.ChildList.Populate(ChildListOptions options)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(Item item, Boolean processChildren)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(Item item, Boolean processChildren)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(List`1 items)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetCheckCloneLinksMessage(List`1 items)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.CheckCloneLinks(ClientPipelineArgs args)
您可以尝试使用 DB Browser /sitecore/admin/dbbrowser.aspx
使用此工具,您还可以删除项目。
如果这个 DB Browser 管理工具失败,那么我很好奇 master 数据库中有什么,直接在 sql 中检查是什么让这个项目特别而不是一个选项。
您提供的异常发生是因为您的项目的 __Source Item - {19B597D3-2EDD-4AE2-AEFE-4A94C7F10E31}
字段中有非空的无效值。 __Source Item
负责存储克隆项目的原始项目 URI。
我不知道您是如何实现的,因为 saveItem
管道中有一个处理器 ValidateCloneSourceModifications
可以防止保存具有无效 __Source Item
字段的项目。
我能够通过更改数据库中的字段值来重现您的异常。
如何修复:
- 在主数据库 -> SharedFields 中找到你损坏的字段 table。
FieldId
是 '19B597D3-2EDD-4AE2-AEFE-4A94C7F10E31'.
- 修复它。它应该类似于
sitecore://master/{AE76A034-9491-4B83-99F5-39F227D6FB59}
,其中 ID 是原始项目 ID。您也可以只将 ''
设置为一个值,但它会删除对原始项目的绑定。
- 清除缓存。
一定有帮助。
Exception: System.ArgumentNullException
Message: Value cannot be null.
Parameter name: uri
Source: Sitecore.Kernel
我正在本地编辑一个占位符项目 Sitecore 8.1(修订版 151207)实例时出现此错误。现在我无法编辑、删除或重置它(或其父文件夹)。我也无法阅读内容编辑器中的项目,因为当我单击父文件夹时会弹出错误。我已经尝试 deleting/editing 它,它是内容编辑器中的父文件夹,通过代码和 PowerShell 命令,但始终显示相同的错误。
我也试过用我的备份副本替换我的配置和 bin 文件夹、清除缓存、重新启动 IIS 和应用程序池,但没有任何帮助。
我完全卡住了。有谁知道如何解决这个问题?
编辑: 日志中的完整错误是:
Exception: System.ArgumentNullException
Message: Value cannot be null.
Parameter name: uri
Source: Sitecore.Kernel
at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument, String argumentName)
at Sitecore.Data.ItemUri..ctor(ItemUri uri)
at Sitecore.Data.Items.Item.GetItemUriFromSourceItem()
at Sitecore.Data.Items.Item.get_SourceUri()
at Sitecore.Data.Items.Item.get_Source()
at Sitecore.Data.Fields.Field.GetSourceItem()
at Sitecore.Data.Fields.Field.GetInheritedValue(Boolean allowStandardValue)
at Sitecore.Pipelines.GetFieldValue.GetInheritedValue.Process(GetFieldValueArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Data.Fields.Field.GetValue(Boolean allowStandardValue, Boolean allowDefaultValue, Boolean allowFallbackValue, Boolean allowInheritValue, Boolean allowInnerValue)
at Sitecore.Pipelines.ItemProvider.GetItem.GetLanguageFallbackItem.IsItemFallbackEnabled(Item item)
at Sitecore.Pipelines.ItemProvider.GetItem.GetLanguageFallbackItem.Process(GetItemArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Data.Managers.PipelineBasedItemProvider.ExecuteAndReturnResult[TArgs,TResult](String pipelineName, String pipelineDomain, Func`1 pipelineArgsCreator, Func`1 fallbackResult)
at Sitecore.Data.Managers.ItemManager.GetItem(ID itemId, Language language, Version version, Database database, SecurityCheck securityCheck)
at Sitecore.Nexus.Data.DataCommands.GetChildrenCommand.Execute(Item )
at Sitecore.Data.Engines.EngineCommand`2.Execute()
at Sitecore.Data.Managers.ItemProvider.GetChildren(Item item, ChildListOptions options)
at Sitecore.Data.Managers.ItemProvider.GetChildren(Item item, SecurityCheck securityCheck, ChildListOptions options)
at Sitecore.Data.Managers.PipelineBasedItemProvider.ExecuteAndReturnResult[TArgs,TResult](String pipelineName, String pipelineDomain, Func`1 pipelineArgsCreator, Func`1 fallbackResult)
at Sitecore.Data.Managers.PipelineBasedItemProvider.GetChildren(Item item, SecurityCheck securityCheck)
at Sitecore.Collections.ChildList.Populate(ChildListOptions options)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(Item item, Boolean processChildren)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(Item item, Boolean processChildren)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetItemClones(List`1 items)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.GetCheckCloneLinksMessage(List`1 items)
at Sitecore.Shell.Framework.Pipelines.DeleteItems.CheckCloneLinks(ClientPipelineArgs args)
您可以尝试使用 DB Browser /sitecore/admin/dbbrowser.aspx
使用此工具,您还可以删除项目。
如果这个 DB Browser 管理工具失败,那么我很好奇 master 数据库中有什么,直接在 sql 中检查是什么让这个项目特别而不是一个选项。
您提供的异常发生是因为您的项目的 __Source Item - {19B597D3-2EDD-4AE2-AEFE-4A94C7F10E31}
字段中有非空的无效值。 __Source Item
负责存储克隆项目的原始项目 URI。
我不知道您是如何实现的,因为 saveItem
管道中有一个处理器 ValidateCloneSourceModifications
可以防止保存具有无效 __Source Item
字段的项目。
我能够通过更改数据库中的字段值来重现您的异常。
如何修复:
- 在主数据库 -> SharedFields 中找到你损坏的字段 table。
FieldId
是 '19B597D3-2EDD-4AE2-AEFE-4A94C7F10E31'. - 修复它。它应该类似于
sitecore://master/{AE76A034-9491-4B83-99F5-39F227D6FB59}
,其中 ID 是原始项目 ID。您也可以只将''
设置为一个值,但它会删除对原始项目的绑定。 - 清除缓存。
一定有帮助。