Question

Nous avons un composant WebPart de navigation personnalisé qui utilise PortalSiteMapProvider de MOSS pour créer un menu de navigation. Il semble que le fournisseur ne gère pas ses objets. Avez-vous une idée de la façon de gérer les objets créés dans le fournisseur?

Cela provoque des erreurs de journalisation comme suit:

Nombre potentiellement excessif d'objets SPRequest (9) actuellement non libérés sur le thread 1. Assurez-vous que cet objet ou son parent (tel qu'un site SPWeb ou SPSite) est correctement supprimé. Id d'allocation pour cet objet: {56D66DBA-AE72-42DF-A70F-B45E05A60A08} Trace de pile de l'allocation actuelle:
sur Microsoft.SharePoint.SPRequestManager.Add (demande SPRequest, booléen partageable)
sur Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity (Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte [] UserToken, Chaîne nom_utilisateur, Boolean bIean, Boolean bIgnoreTokenTimeout, Boolean bAsAnonymous). sur Microsoft.SharePoint.SPWeb.InitializeSPRequest ()
sur Microsoft.SharePoint.SPWeb.EnsureSPRequest ()
sur Microsoft.SharePoint.SPWeb.get_Request ()
sur Microsoft.SharePoint.SPWeb.InitWebPublic ()
sur Microsoft.SharePoint.SPWeb.get_Exists ()
sur Microsoft.SharePoint.Publishing.CachedObjectFactory.CreateWebFromUrl (URL de la chaîne)
sur Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode..ctor (PortalWebSiteMapNode webNode, noeud SPNavigationNode, parentNode PortalSiteMapNode, type NodeTypes, String url, titre de chaîne, description de chaîne)

sur Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode.CreateSPNavigationSiteMapNode (PortalWebSiteMapNode, noeud Web, noeud SPNavigationNode, PortalSiteMapNode parentNode)
sur Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.ProcessSPNavigationNode (noeud SPNavigationNode, SPNavigationNode previousSibling, PortalSiteMapNode parentNode)

sur Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMap.Node.PopulateNavigationChildren ()
sur Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedTypes, NodeTypes includedHiddenTypes, OrderingMethod, Méthode AutomaticSortingMethod, Boolean ascending, Int32 lcid)
sur Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedHiddenTypes)
sur Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (noeud PortalSiteMapNode, NodeTypes includedHiddenTypes)

sur Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (noeud SiteMapNode)

sur System.Web.SiteMapNode.get_ChildNodes ()
sur Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable.System.Collections.IEnumerable.GetEnumerator ()
sur System.Web.UI.WebControls.Menu.DataBindRecursive (noeud MenuItem, IHierarchicalEnumerable enumerable)

sur System.Web.UI.WebControls.Menu.DataBindRecursive (noeud MenuItem, IHierarchicalEnumerable enumerable)

sur System.Web.UI.WebControls.Menu.DataBindItem (élément MenuItem)
sur System.Web.UI.WebControls.Menu.PerformDataBinding ()
sur System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect ()

sur System.Web.UI.WebControls.BaseDataBoundControl.DataBind ()
sur System.Web.UI.WebControls.Menu.DataBind ()
sur System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound ()

sur System.Web.UI.WebControls.Menu.EnsureDataBound ()
sur System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender (EventArgs e)

sur System.Web.UI.WebControls.Menu.OnPreRender (EventArgs, RegistreScript booléen)
sur System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e)
sur Microsoft.SharePoint.WebControls.AspMenu.OnPreRender (EventArgs e)
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
sur System.Web.UI.Control.PreRenderRecursiveInternal ()
at System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

at System.Web.UI.Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

sur System.Web.UI.Page.ProcessRequest () sur System.Web.UI.Page.ProcessRequestWithNoAssert (contexte HttpContext)

sur System.Web.UI.Page.ProcessRequest (contexte HttpContext) sur ASP.VIEWPAGE_ASPX_2077083467.ProcessRequest (contexte HttpContext)

sur System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
sur System.Web.HttpApplication.ExecuteStep (étape IExecutionStep, Boolean & complete; Synchronically)

sur System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (erreur d'exception)
sur System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (HttpCont

Était-ce utile?

La solution

Le blog de Stefan Goer a semblé répondre à la question. Le problème n'est pas que les objets SPWeb ne sont pas fermés, mais qu'une fois qu'un certain seuil (attribué par défaut à 8) est atteint, l'avertissement est créé dans le journal. En fonction de la structure de votre site, le nombre créé sera différent. Étant donné la nature imbriquée de la navigation, les objets sont maintenus ouverts pendant le parcours de la sous-arborescence. Ainsi, les objets sont éliminés correctement, c’est simplement que plus de 8 (par défaut) sont maintenus ouverts à un moment donné.

Voir cette question

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top