Pregunta

Tenemos un elemento web de navegación personalizado que utiliza PortalSiteMapProvider de MOSS para crear un menú de navegación. Parece que el Proveedor no está administrando sus objetos. ¿Alguna idea sobre cómo administrar los objetos que se crean en el proveedor?

Está causando errores de registro así:

Número potencialmente excesivo de objetos SPRequest (9) actualmente no publicados en el subproceso 1. Asegúrese de que este objeto o su elemento primario (como un SPWeb o SPSite) se elimine correctamente. Id. De asignación para este objeto: {56D66DBA-AE72-42DF-A70F-B45E05A60A08} Seguimiento de pila de asignación actual:
en Microsoft.SharePoint.SPRequestManager.Add (solicitud SPRequest, compartible booleano)
en Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity (Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte [] UserToken, String userName, Boolean bIgnoreTokenTimeout, Boolean bAsAonymous) en Microsoft.SharePoint.SPWeb.InitializeSPRequest ()
en Microsoft.SharePoint.SPWeb.EnsureSPRequest ()
en Microsoft.SharePoint.SPWeb.get_Request ()
en Microsoft.SharePoint.SPWeb.InitWebPublic ()
en Microsoft.SharePoint.SPWeb.get_Exists ()
en Microsoft.SharePoint.Publishing.CachedObjectFactory.CreateWebFromUrl (URL de cadena)
en Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode..ctor (PortalWebSiteMapNode webNode, SPNavigationNode node, PortalSiteMapNode parentNode, NodeTypes type, String url, String title, String description)
en Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode.CreateSPNavigationSiteMapNode (PortalWebSiteMapNode webNode, SPNavigationNode node, PortalSiteMapNode parentNode)
en Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.ProcessSPNavigationNode (nodo SPNavigationNode, SPNavigationNode previousSibling, PortalSiteMapNode parentNode)
en Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMap.Node.PopulateNavigationChildren ()
en Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedTypes, NodeTypes includedHiddenTypes, OrderingMethod ordering, AutomaticSortingMethod method, Boolean ascending, Int32 lcid)
en Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedHiddenTypes)
en Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (nodo PortalSiteMapNode, NodeTypes incluidoHiddenTypes)
en Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (nodo SiteMapNode)
en System.Web.SiteMapNode.get_ChildNodes ()
en Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable.System.Collections.IEnumerable.GetEnumerator ()
en System.Web.UI.WebControls.Menu.DataBindRecursive (nodo MenuItem, IHierarchicalEnumerable enumerable)
en System.Web.UI.WebControls.Menu.DataBindRecursive (nodo MenuItem, IHierarchicalEnumerable enumerable)
en System.Web.UI.WebControls.Menu.DataBindItem (elemento MenuItem)
en System.Web.UI.WebControls.Menu.PerformDataBinding ()
en System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect ()
en System.Web.UI.WebControls.BaseDataBoundControl.DataBind ()
en System.Web.UI.WebControls.Menu.DataBind ()
en System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound ()
en System.Web.UI.WebControls.Menu.EnsureDataBound ()
en System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender (EventArgs e)
en System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e, Boolean registerScript)
en System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e)
en Microsoft.SharePoint.WebControls.AspMenu.OnPreRender (EventArgs e)
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Control.PreRenderRecursiveInternal ()
en System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
en System.Web.UI.Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
en System.Web.UI.Page.ProcessRequest () en System.Web.UI.Page.ProcessRequestWithNoAssert (contexto HttpContext)
en System.Web.UI.Page.ProcessRequest (contexto HttpContext) en ASP.VIEWPAGE_ASPX_2077083467.ProcessRequest (contexto HttpContext)
en System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
en System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, Boolean & amp; completeSynchronously)
en System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (error de excepción)
en System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (HttpCont

¿Fue útil?

Solución

La publicación de blog de Stefan Goßner parece responder a la pregunta. El problema no es que los objetos SPWeb no se estén cerrando, sino que una vez que se alcanza un cierto umbral (predeterminado en 8) de asignaciones, se crea la advertencia en el registro. Dependiendo de la estructura de su sitio, el número que se creará variará. Dada la naturaleza anidada de la navegación, los objetos se mantienen abiertos mientras se recorre el subárbol. Entonces, los objetos están correctamente eliminados, es solo que más de 8 (por defecto) se mantienen abiertos en un momento dado.

Ver esta pregunta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top