尝试使用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
答案 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中创建或部署缺少的根项目。完成后再添加索引。