Sitecore - 未定义根项目

时间:2013-03-12 08:11:54

标签: sitecore

尝试使用TDS进行部署时遇到以下错误。我不相信有任何自定义索引。我查看了以下链接并清除了我的\ Data \ Indexes文件夹。

Sitecore Index error - Root Item Not defined

什么可能导致此错误?

这也是我收到错误的网址:http://<hostname>/sitecore

完整堆栈跟踪:

[InvalidOperationException: Root item is not defined]
   Sitecore.Diagnostics.Assert.IsNotNull(Object value, String message) +59
   Sitecore.Search.Crawlers.DatabaseCrawler.Initialize(Index index) +106
   Sitecore.Search.Index.AddCrawler(ICrawler crawler) +36

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +1255
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +91
   Sitecore.Configuration.Factory.AssignProperties(Object obj, Object[] properties) +760
   Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper) +943
   Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper) +305
   Sitecore.Configuration.Factory.GetInnerObject(XmlNode paramNode, String[] parameters, Boolean assert) +858
   Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper) +795
   Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper) +305
   Sitecore.Configuration.Factory.CreateObject(String configPath, String[] parameters, Boolean assert) +395
   Sitecore.Search.SearchManager.get_SearchConfig() +71
   Sitecore.Search.SearchManager.GetIndex(String id) +43
   Sitecore.Shell.Applications.ShellForm.OnLoad(EventArgs e) +1331

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +1255
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +91
   Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +332
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

2 个答案:

答案 0 :(得分:12)

如果你浏览到这个页面http:// [yourhostname] /sitecore/admin/showconfig.aspx

搜索索引元素的任何实例,并检查内容树中实际存在的<Root>path here</Root>节点路径

请参阅示例的默认索引<​​/ p>

<index id="system" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">__system</param>
<Analyzer ref="search/analyzer"/>
<locations hint="list:AddCrawler">
<core type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>core</Database>
<Root>/sitecore/content</Root>
<include hint="list:IncludeTemplate">
<application>{EB06CEC0-5E2D-4DC4-875B-01ADCC577D13}</application>
</include>
<Tags>application</Tags>
<Boost>2.0</Boost>
</core>
<core-controlpanel type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>core</Database>
<Root>/sitecore/content/applications/control panel</Root>
<include hint="list:IncludeTemplate">
<taskoption>{BDB6FA46-2F76-4BDE-8138-52B56C2FC47E}</taskoption>
</include>
<Tags>taskoption</Tags>
<Boost>1.9</Boost>
</core-controlpanel>
<master type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<Database>master</Database>
<Tags>master content</Tags>
</master>
</locations>
</index>

纠正任何无效的Root值后,该网站应该再次运行。

答案 1 :(得分:5)

问题原因

Sitecore lucene索引 声明时,通常会出现此问题,但它引用的<Root> 不在数据库中 >

注意:如果索引目标的数据库是web,则可能是因为您没有published项目。

问题修复

由于您无法访问Sitecore桌面,因此您必须注释掉导致该问题的索引。如果您不知道它是哪一个,您必须使用普通的旧版试错,因为sitecore不会告诉您。

要查看您在系统中声明的所有索引,请转至http://[yourhostname]/sitecore/admin/showconfig.aspx并搜索<index。这是App_Config中声明的所有配置的组合。

索引将如下所示:

<index id="MyIndexId" type="Sitecore.Search.Index, Sitecore.Kernel">

一旦您发现罪魁祸首将其注释掉,那么在Sitecore中创建或部署缺少的根项目。完成后再添加索引。