Sitecore Index error - Root Item Not defined

2019-08-28 02:46发布

问题:

Any help regarding below issue will be highly appreciated. We are using Advance database crawler for sitecore CMS which interanlly uses Lucene.NET.

We are getting below error when we try to log into the desktop of sitecore

Heartbeat 16:23:24 ERROR Exception in alarm clock event subscriber.
Exception: System.Reflection.TargetInvocationException
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Sitecore.Configuration.Factory.AssignProperties(Object obj, Object[] properties)
   at Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.GetInnerObject(XmlNode paramNode, String[] parameters, Boolean assert)
   at Sitecore.Configuration.Factory.AssignProperties(XmlNode configNode, String[] parameters, Object obj, Boolean assert, Boolean deferred, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Search.SearchManager.get_SearchConfiguration()
   at Sitecore.Data.Managers.IndexingManager.UpdateIndexAsync(Database database)
   at Sitecore.Data.Managers.IndexingManager.AlarmClock_Ring(Object sender, EventArgs args)
   at Sitecore.Services.AlarmClock.Heartbeat_Beat(Object sender, EventArgs e)

回答1:

The most common reason I've seen this error happen is that you have configured an index for both the master and the web database, but you have not published your content tree to web yet.

Steps to troubleshoot: Remove the index config file. Log in to sitecore and make sure the root path exists in master. If the config file contains a 'web' index definition, publish your root path (at least) to 'web'. Put back the index config file.



回答2:

Assuming you posted the wrong stacktrace and the error you get is "Root Item Not Defined", you should check your configuration and locate the element:

search/configuration/indexes/index/locations/<any name here>/Root

There can be more of those nodes (each index can have multiple location nodes).

In your case, at least one of those Root nodes contains a Sitecore path that doesn't exist. Point it to an exisiting item and it will work.

You probably have copied the configuration that comes with the Advanced Database Crawler without modifying it to fit your environment.