页面预览期间的功能区控制异常

时间:2013-08-06 17:34:35

标签: sitecore sitecore6

您在预览期间加载页面时我没有加载功能区。 你有任何解决方法吗?

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.]
   Sitecore.Data.Database.ApplySecurity(Item[] items) +112
   Sitecore.Data.Database.SelectItems(String query) +252
   Sitecore.Shell.Applications.WebEdit.Commands.OpenMyItems.GetHeader(CommandContext context, String header) +188
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderSmallButton(HtmlTextWriter output, Item button, CommandContext commandContext) +307
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderButton(HtmlTextWriter output, Item button, CommandContext commandContext) +732
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderChunk(HtmlTextWriter output, Item chunk, CommandContext commandContext) +330
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderChunk(HtmlTextWriter output, Item chunk, CommandContext commandContext, Boolean isContextual, String id) +204
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderChunk(HtmlTextWriter output, Item chunk, CommandContext commandContext, Boolean isContextual) +242
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderChunks(HtmlTextWriter output, Item strip, CommandContext commandContext, Boolean isContextual) +442
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderStrips(HtmlTextWriter output, Item ribbon, Boolean isContextual, ListString visibleStripList) +800
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.RenderStrips(HtmlTextWriter output, Item defaultRibbon, Item contextualRibbon, ListString visibleStripList) +215
   Sitecore.Web.UI.WebControls.Ribbons.Ribbon.Render(HtmlTextWriter output) +610
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +149
   Sitecore.Web.HtmlUtil.RenderControl(Control ctl) +74
   Sitecore.Shell.Applications.WebEdit.WebEditRibbonForm.RenderRibbon(Item item) +603
   Sitecore.Shell.Applications.WebEdit.WebEditRibbonForm.OnLoad(EventArgs e) +1238

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +76
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +193
   System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +35
   Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +337
   System.Web.UI.Control.LoadRecursive() +71
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

3 个答案:

答案 0 :(得分:8)

从堆栈跟踪信息看起来问题在于功能区中的My Items按钮。

enter image description here

似乎由于某种原因,加载此按钮时执行的快速查询返回包含null的项列表。你有自定义数据提供者吗?

您可以尝试两种解决方案:

  • 清除/sitecore/admin/cache.aspx页面上的缓存
  • 通过 admin
  • 运行此查询,找到导致问题的项目
Item[] items = Sitecore.Client.ContentDatabase.SelectItems(
    "fast://*[@__lock='%\"full-username-which-experienced-exception-with-domain-name\"%']");

另一个选项是从功能区隐藏此按钮(在core数据库中删除或更改/sitecore/content/Applications/WebEdit/Ribbons/WebEdit/Page Editor/Edit/My Items的安全权限)。根据我的经验,此按钮很少在Page Editor模式下使用,并且可以减慢Page Editor,因为每次加载此模式时,My items按钮会计算当前用户锁定的所有文章所以去掉它可能是一个好主意。

答案 1 :(得分:2)

我在网页编辑模式下遇到了Sitecore 7中的相同问题。我还验证了在内容编辑器中单击“我的项目”按钮时发生的错误。

我发现Alex Shyba的这篇文章:http://sitecoreblog.alexshyba.com/2011/11/hidden-gem-of-sitecore-page-editor.html

他的帖子建议在web.config或更好的包含文件中设置此设置:

<setting name="WebEdit.ShowNumberOfLockedItemsOnButton" value="false" />

这解决了我在页面编辑器中的问题,并且干净且易于实现。希望这也有助于其他人在努力解决这个问题。

答案 2 :(得分:2)

使用7.1时,我从另一台计算机上的备份还原数据库时启动了此错误。我能够通过重建搜索索引来解决它:

桌面&gt;控制面板&gt;数据库&gt;重建搜索索引

我还清理了数据库并重建了链接数据库,但那些似乎没有解决它。