PortalSiteMapProvider вызывает чрезмерное количество объектов SPRequest

StackOverflow https://stackoverflow.com/questions/270161

Вопрос

У нас есть настраиваемая веб-часть навигации, которая использует PortalSiteMapProvider из MOSS для создания навигации по меню. Похоже, что Провайдер не управляет своими объектами. Есть идеи, как управлять объектами, которые создаются в провайдере?

Это приводит к ошибкам в журнале, например так:

Потенциально избыточное количество объектов SPRequest (9), в настоящее время не выпущенных в потоке 1. Убедитесь, что этот объект или его родительский объект (например, SPWeb или SPSite) правильно утилизируется. Идентификатор распределения для этого объекта: {56D66DBA-AE72-42DF-A70F-B45E05A60A08} Трассировка стека текущего выделения:
в Microsoft.SharePoint.SPRequestManager.Add (запрос SPRequest, булево совместное использование)
в Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity (логическое значение bNotGlobalAdminCode, String strUrl, логическое значение bNotAddToContext, Byte [] UserToken, строковое имя пользователя, логическое значение bIgnoreTokenTimeout, логическое значение) как в Microsoft.SharePoint.SPWeb.InitializeSPRequest ()
в Microsoft.SharePoint.SPWeb.EnsureSPRequest ()
в Microsoft.SharePoint.SPWeb.get_Request ()
в Microsoft.SharePoint.SPWeb.InitWebPublic ()
в Microsoft.SharePoint.SPWeb.get_Exists ()
в Microsoft.SharePoint.Publishing.CachedObjectFactory.CreateWebFromUrl (URL-адрес строки)
в Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode..ctor (PortalWebSiteMapNode webNode, узел SPNavigationNode, родительский узел PortalSiteMapNode, тип NodeTypes, URL-адрес строки, заголовок строки, описание строки)
в Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode.CreateSPNavigationSiteMapNode (PortalWebSiteMapNode webNode, узел SPNavigationNode, PortalSiteMapNode parentNode)
в Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.ProcessSPNavigationNode (узел SPNavigationNode, узел SPNavigationNode previousSibling, родительский узел PortalSiteMapNode)
в Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMap.Node.PopulateNavigationChildren ()
в Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includesTypes, NodeTypes includesHiddenTypes, упорядочивание по методу OrderingMethod, метод AutomaticSortingMethod, логический восходящий, Int32 lcid)
в Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes включеныHiddenTypes)
в Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (узел PortalSiteMapNode, NodeTypes включеныHiddenTypes)
в Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (узел SiteMapNode)
в System.Web.SiteMapNode.get_ChildNodes ()
в Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable.System.Collections.IEnumerable.GetEnumerator ()
в System.Web.UI.WebControls.Menu.DataBindRecursive (узел MenuItem, перечисляемый IHierarchicalEnumerable)
в System.Web.UI.WebControls.Menu.DataBindRecursive (узел MenuItem, перечисляемый IHierarchicalEnumerable)
в System.Web.UI.WebControls.Menu.DataBindItem (элемент MenuItem)
в System.Web.UI.WebControls.Menu.PerformDataBinding ()
в System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect ()
в System.Web.UI.WebControls.BaseDataBoundControl.DataBind ()
в System.Web.UI.WebControls.Menu.DataBind ()
в System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound ()
в System.Web.UI.WebControls.Menu.EnsureDataBound ()
в System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender (EventArgs e)
в System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e, логический registerScript)
в System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e)
в Microsoft.SharePoint.WebControls.AspMenu.OnPreRender (EventArgs e)
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Control.PreRenderRecursiveInternal () <

Это было полезно?

Решение

Stefan Go & ner . Проблема заключается не в том, что объекты SPWeb не закрываются, а в том, что после достижения определенного порога (по умолчанию 8) выделений в журнале создается предупреждение. В зависимости от структуры вашего сайта, число будет создаваться. Учитывая вложенный характер навигации, объекты остаются открытыми во время обхода поддерева. Таким образом, объекты правильно утилизируются, просто более 8 (по умолчанию) остаются открытыми в данный момент времени.

Смотрите этот вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top