Sitecore 8:删除断开的链接时获取应用程序错误

Sitecore 8:删除断开的链接时获取应用程序错误,sitecore,sitecore8,Sitecore,Sitecore8,我尝试使用以下url提供的工具删除主数据库上的断开链接。 一段时间后,进程被中断,我在Sitecore日志中发现以下错误 6220 10:56:26 INFO Removing broken link- Database: master, Item: /sitecore/content/Home/blog/2012/January/13/totaljobs-group-benefit-from-expert-sitecore-consultancy-delivered-by-codehous

我尝试使用以下url提供的工具删除主数据库上的断开链接。

一段时间后,进程被中断,我在Sitecore日志中发现以下错误

6220 10:56:26 INFO  Removing broken link- Database: master, Item: /sitecore/content/Home/blog/2012/January/13/totaljobs-group-benefit-from-expert-sitecore-consultancy-delivered-by-codehouse, Field: __Renderings, Target item database: master, Target item path: /sitecore/content/global/Codehouse Widgets/Mini Form Widgets/newsletter-subscription
6220 10:56:26 INFO  Done
6220 10:56:26 INFO  Removing broken link- Database: master, Item: /sitecore/content/Home/blog/2012/January/13/totaljobs-group-benefit-from-expert-sitecore-consultancy-delivered-by-codehouse, Field: __Renderings, Target item database: master, Target item path: /sitecore/content/global/Codehouse Widgets/Mini Form Widgets/sitecore-demo-text-only
6220 10:56:26 INFO  Done
6220 10:56:26 ERROR Error looking up template field. Field id: {00000000-0000-0000-0000-000000000000}. Template id: {0437FEE2-44C9-46A6-ABE9-28858D9FEE8C}
Exception: System.ArgumentOutOfRangeException
Message: Null ID is not allowed.
Parameter name: fieldID.
Actual value was {00000000-0000-0000-0000-000000000000}.
Source: Sitecore.Kernel
   at Sitecore.Data.Templates.TemplateSection.GetField(ID fieldID)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.GetField(ID fieldID)

6220 10:56:26 ERROR Application error.
Exception: System.Web.HttpUnhandledException
Message: Exception of type 'System.Web.HttpUnhandledException' was thrown.
Source: System.Web
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Nested Exception

Exception: System.ArgumentOutOfRangeException
Message: Null ID is not allowed.
Parameter name: fieldID.
Actual value was {00000000-0000-0000-0000-000000000000}.
Source: Sitecore.Kernel
   at Sitecore.Data.Templates.TemplateSection.GetField(ID fieldID)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.DoGetField(ID fieldID, String fieldName, Stack`1 stack)
   at Sitecore.Data.Templates.Template.GetField(ID fieldID)
   at Sitecore.Data.Fields.Field.GetTemplateField()
   at Sitecore.Data.Fields.FieldTypeManager.GetField(Field field, String runtimeValue)
   at Sitecore.sitecore.admin.RemoveBrokenLinks.FixBrokenLinksInDatabase(Database database, Boolean serializeItem)
   at Sitecore.sitecore.admin.RemoveBrokenLinks.FixBrokenLinksOnClick(Object sender, EventArgs e)
   at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

在执行RemoveBrokenLink之前,是否可以创建清理数据库? Tu清理数据库转到->控制面板->数据库->清理数据库 我猜您有一些孤立项(没有模板的项) 执行数据库清理时,将执行以下任务:

  • 删除具有父项但父项不在项中的项 树
  • 删除无效的语言数据

  • 删除不存在项的字段

  • 删除孤立项
  • 删除未使用的blob记录
  • 从步骤4中删除的孤立项中删除字段
  • 重建子体表(存储父/子关系)
  • 清除所有缓存

  • 非常奇怪的是,它没有通过使用清理数据库重建链接数据库来解决问题

    几个问题:

  • 在清理和重建过程中,你发现了什么 与Sitecore日志中的问题相关的条目?如果是的话,请把它也贴在这里好吗
  • 读取您提供的堆栈跟踪时,似乎存在孤立模板,这就是它引发异常的原因:System.ArgumentOutOfRangeException。请您重复同样的重建和清理过程,并告诉我们第二次运行的结果,好吗 P>可选的,如果您发现重复这个过程非常耗时和性能重,那么您可能需要考虑创建一个<强> Link DabaseReFrESHoad.ASPX <强>文件,将其放在\“网站\ \”管理文件夹中,下面的代码作为处理器:

    foreach (var specificItem in itemList)
    {
        specificItem.Editing.BeginEdit();
        Sitecore.Globals.LinkDatabase.UpdateReferences(specificItem);
        specificItem.Editing.EndEdit();
    }
    
    创建一个asp:Textbox和一个submit按钮,调用OnClick方法。通过访问http:\\YOUR\u WEBSITE\admin\linkdatabaserefreshttool.aspx打开工具


    我以前也遇到过同样的问题,我只是再次重建它,这就解决了问题。也许你这边的解决方案也一样,还是值得一试。

    我试过这个。我清理了数据库并重建了链接数据库。但我还是得到了上面的错误。有没有办法手动删除这些链接?