7

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

Sitecore 索引错误 - 未定义根项目

什么会导致此错误?

这也是我收到错误的网址: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
4

2 回答 2

12

如果您浏览到此页面 http://[yourhostname]/sitecore/admin/showconfig.aspx

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

有关示例,请参见默认索引

<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 值后,该站点应再次运行。

于 2013-03-12T09:50:48.110 回答
5

问题原因

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.

Issue fix

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.

于 2014-02-18T01:43:55.830 回答