My new blog present here.

Featured Post

Insights into Sitecore Search: A Definitive Introduction

A key component of digital experience management is effective information retrieval. A simplified approach is required for websites, applications, and platforms containing a lot of material so that consumers can easily get the data they require. This need is met by Sitecore, a well-known name in the field of digital experience platforms (DXPs), which provides powerful and comprehensive search functionality. We will travel into the realm of Sitecore Search in this article, learning about its capabilities, architecture , and the enormous value it offers both developers and end users. Introduction to Sitecore Search    A headless content discovery platform powered by AI , Sitecore Search enables you to build predictive and custom search experiences across various content sources. To extract and ...

Sitecore Error Troubleshooting: Experience Editor and Preview mode Error- Rendering view QuickbarButton.cshtml

Error Details: [InvalidOperationException]: Error while rendering view: '/sitecore/shell/client/Sitecore/Speak/Ribbon/Controls/QuickbarButton/QuickbarButton.cshtml' (model: 'Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc').

The one of the feature of Sitecore is to support multisite using single instance of Sitecore and for this we can utilize the Sitecore patch file to setup the new site:

      <site name="BrandA"
    rootPath="/sitecore/content/Tenant/BrandA"
    startItem="/Home"
    hostName=www.BrandA.com />
      <site name="BrandB"
          rootPath="/sitecore/content/Tenant/BrandB"
          startItem="/Home"
        hostName="www.BrandB.com"/>

Recently I was working on a Sitecore 9.1 project where we need to convert single site implementation into multiple managed websites, so I requested one of the team member to perform this task.
After setting up the BrandB website, we started getting error in Sitecore Experience Editor and Preview mode while accessing the page from BrandB:- Ribbon was not loading and Sitecore loading screen was in active mode only:

BrandB Site Patch file:

<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<sites>
<site name="SiteB" patch:after="site[@name='modules_website']"
targetHostName="sc910.local"
database="web"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content/Tenant/SiteB"
startItem="/Home"
dictionaryPath="/sitecore/content/Tenant/SiteB/Global/Dictionary"
dictionaryAutoCreate="false"
domain="extranet"
allowDebug="true"
cacheHtml="true"
htmlCacheSize="50MB"
registryCacheSize="0"
viewStateCacheSize="0"
xslCacheSize="25MB"
filteredItemsCacheSize="10MB"
enablePreview="true"
enableWebEdit="true"
enableDebugger="true"
disableClientData="false"
cacheRenderingParameters="true"
renderingParametersCacheSize="10MB"
formsRoot="{4BC8A78C-44A7-46EB-8126-040D3F12CAA0}"
enableItemLanguageFallback="true" />
</sites>
<cacheSizes>
<sites>
<habitat>
<html>50MB</html>
<registry>0</registry>
<viewState>0</viewState>
<xsl>25MB</xsl>
</habitat>
</sites>
</cacheSizes>
<settings>
<setting name="Preview.DefaultSite">
<patch:attribute name="value" value="SiteA" />
</setting>
</settings>
</sitecore>
</configuration>

Error Analysis: To verify this issue,

1. I checked the log file:
<!--
[InvalidOperationException]: siteName
at Sitecore.Web.WebUtil.GetCookieValue(String siteName, String key, String defaultValue)
at Sitecore.ExperienceEditor.Speak.Server.Contexts.ItemContext.get_WebEditMode()
at Sitecore.ExperienceEditor.Speak.Ribbon.Requests.AddRendering.CanAddRendering.GetControlState()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.RibbonButtonBase.ExecuteProcessComponentState[T](Object requestObject, T context)
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.RibbonButtonBase.ExecuteProcessComponentState(Object requestObject)
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.RibbonButtonBase.GetProcessComponentState()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.RibbonButtonBase.PreRender()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.RibbonIconButtonBase.PreRender()
at Sitecore.Web.UI.Controls.ComponentBase.Render()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.QuickbarButton.ControlsExtension.QuickbarButton(Controls controls, Rendering rendering)
at ASP._Page_sitecore_shell_client_Sitecore_Speak_Ribbon_Controls_QuickbarButton_QuickbarButton_cshtml.Execute() in D:\inetpub\wwwroot\sc910.local\sitecore\shell\client\Sitecore\Speak\Ribbon\Controls\QuickbarButton\QuickbarButton.cshtml:line 4
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
[InvalidOperationException]: Error while rendering view: &#39;/sitecore/shell/client/Sitecore/Speak/Ribbon/Controls/QuickbarButton/QuickbarButton.cshtml&#39; (model: &#39;Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc&#39;).
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Extensions.EnumerableExtensions.Each[T](IEnumerable`1 source, Action`1 action)
at Sitecore.Web.UI.Controls.Common.ItemRenderers.ItemRenderer.RenderItem(TextWriter output, Item item)
at Sitecore.Web.UI.Controls.Common.ItemRenderers.ItemRenderer.Render(HtmlTextWriter output)
at Sitecore.Web.UI.Controls.ComponentBase.Render()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.QuickBar.QuickBar.DoRender(HtmlTextWriter output)
at Sitecore.Web.UI.Controls.ComponentBase.Render()
at Sitecore.ExperienceEditor.Speak.Ribbon.Controls.QuickBar.ControlsExtension.QuickBar(Controls controls, Rendering rendering)
at ASP._Page_sitecore_shell_client_Sitecore_Speak_Ribbon_Controls_QuickBar_QuickBar_cshtml.Execute() in D:\inetpub\wwwroot\sc910.local\sitecore\shell\client\Sitecore\Speak\Ribbon\Controls\QuickBar\QuickBar.cshtml:line 4
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
[InvalidOperationException]: Error while rendering view: &#39;/sitecore/shell/client/Sitecore/Speak/Ribbon/Controls/QuickBar/QuickBar.cshtml&#39; (model: &#39;Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc&#39;).
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderPlaceholder.PerformRendering.Render(String placeholderName, TextWriter writer, RenderPlaceholderArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Helpers.SitecoreHelper.RenderPlaceholderCore(String placeholderName, TextWriter writer)
at Sitecore.Mvc.Helpers.SitecoreHelper.Placeholder(String placeholderName)
at Sitecore.ExperienceEditor.Speak.PageEditbar.PageEditBar.Render(HtmlTextWriter output)
at Sitecore.Web.UI.Controls.ComponentBase.Render()
at Sitecore.ExperienceEditor.Speak.PageEditbar.ControlsExtension.PageEditBar(Controls controls, Rendering rendering, HtmlHelper`1 htmlHelper)
at ASP._Page_sitecore_shell_client_Sitecore_ExperienceEditor_PageEditbar_PageEditBar_cshtml.Execute() in D:\inetpub\wwwroot\sc910.local\sitecore\shell\client\Sitecore\ExperienceEditor\PageEditbar\PageEditBar.cshtml:line 4
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
[InvalidOperationException]: Error while rendering view: &#39;/sitecore/shell/client/Sitecore/ExperienceEditor/PageEditbar/PageEditBar.cshtml&#39; (model: &#39;Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc&#39;).
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderPlaceholder.PerformRendering.Render(String placeholderName, TextWriter writer, RenderPlaceholderArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Helpers.SitecoreHelper.RenderPlaceholderCore(String placeholderName, TextWriter writer)
at Sitecore.Mvc.Helpers.SitecoreHelper.Placeholder(String placeholderName)
at ASP._sitecore_shell_client_Speak_Layouts_Layouts_Speak_Layout_cshtml.Execute()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
[InvalidOperationException]: Error while rendering view: &#39;/sitecore/shell/client/Speak/Layouts/Layouts/Speak-Layout.cshtml&#39; (model: &#39;Sitecore.Mvc.Presentation.RenderingModel, Sitecore.Mvc&#39;).
at Sitecore.Mvc.Presentation.ViewRenderer.Render(TextWriter writer)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Render(Renderer renderer, TextWriter writer, RenderRenderingArgs args)
at Sitecore.Mvc.Pipelines.Response.RenderRendering.ExecuteRenderer.Process(RenderRenderingArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Presentation.RenderingView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
[HttpUnhandledException]: An unhandled exception occurred.
at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.ShowErrorMessage(ExceptionContext exceptionContext, ExceptionArgs args)
at Sitecore.Mvc.Pipelines.MvcEvents.Exception.ShowAspNetErrorMessage.Process(ExceptionArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.Mvc.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args)
at Sitecore.Mvc.Filters.PipelineBasedRequestFilter.OnException(ExceptionContext exceptionContext)
at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
at Sitecore.Mvc.Routing.RouteHttpHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
-->

And found [InvalidOperationException]: Error while rendering view: &#39;/sitecore/shell/client/Sitecore/Speak/Ribbon/Controls/QuickbarButton/QuickbarButton.cshtml&#39; .

2. BrandA site was working fine.

3. Removed the Site patch file and SiteB started working fine, in this case it was taking the default website setting. <site name=”website”….> is the default setting that comes with Sitecore.

Cause of Error:
Again, I investigated the BrandB patch file and found that Preview.DefaultSite setting was pointing to BrandA and due to this Ribbon was not loading in Experience Editor and Preview mode.

In multisite configuration, the value of Rendering.SiteResolving value set as “true” at /App_Config/Sitecore.config which helps in site resolving, so cross-site links can be rendered with correct hostname, language, and virtual folder.

In my case, the Experience Editor and Preview mode are being opened in the context of the site defined in the Preview.DefaultSite setting i.e. SiteA, due to this unexpected error “Server Error in '/' Application.” was coming in the place of Ribbon.

Solution:
To resolve this issue, I changed the Site name to SiteB in Preview.DefaultSite setting and now site context site resolved successfully and started loading the Ribbon correctly in Experience Editor and Preview mode.

Useful articles:


Comments

Popular posts from this blog

Sitecore GraphQL Queries

Sitecore Experience Edge GraphQL Queries

Sitecore Experience Manager Cloud (XM Cloud) Building blocks