I've run into the following error while trying to deploy with TDS. I don't believe that there are any custom indexes. I've looked at the following link and cleared my \Data\Indexes folder.
Sitecore Index error - Root Item Not defined
What can cause this error?
Also this is the url I'm getting the error on : http://<hostname>/sitecore
Full stack trace:
[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
If you browse to this page http://[yourhostname]/sitecore/admin/showconfig.aspx
Search for any instances of the index element and check the <Root>path here</Root>
node path actually exists in your content tree
See the default index for an example
<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>
Once you correct any invalid Root values the site should work again.
This problem usually occurs when an Sitecore lucene index has been declared but the <Root>
it refers to is not in the database.
Note: If the database the index targets is web this may be cause you haven't published
the items.
Because you can't get to the Sitecore desktop you'll have to comment out the index causing the issue. If you don't know which one it is you have to use plain old trial and error because sitecore won't tell you.
To see all indexes you have declared in your system go to http://[yourhostname]/sitecore/admin/showconfig.aspx
and search for <index
. This is the combination of all configuration declared in App_Config.
An index will look like this:
<index id="MyIndexId" type="Sitecore.Search.Index, Sitecore.Kernel">
Once you find the culprit comment it out then create or deploy the missing root item in Sitecore. Once that's done add the index back in.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With