PortalSiteMapProvider вызывает чрезмерное количество объектов SPRequest - PullRequest
1 голос
/ 06 ноября 2008

У нас есть пользовательская веб-часть навигации, которая использует 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, строковое userName, логическое значение bIgnoreTokenTimeout, логическое значение 100A) 100A в 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, логический регистр JavaScript)
в 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 ()
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Control.PreRenderRecursiveInternal ()
в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)
в System.Web.UI.Page.ProcessRequest (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)
в System.Web.UI.Page.ProcessRequest () в System.Web.UI.Page.ProcessRequestWithNoAssert (контекст HttpContext)
в System.Web.UI.Page.ProcessRequest (контекст HttpContext) в ASP.VIEWPAGE_ASPX_2077083467.ProcessRequest (контекст HttpContext)
в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно)
в System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (ошибка исключения)
в System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (HttpCont

1 Ответ

4 голосов
/ 07 ноября 2008

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

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

...