Pergunta

Temos um webpart navegação personalizada que utiliza o PortalSiteMapProvider de musgo para construir um menu de navegação. Parece que o provedor não é administrá-lo de objetos. Qualquer idéia sobre como gerenciar os objetos que estão sendo criados no provedor?

Ele está causando erros de log assim:

Potencialmente número excessivo de SPRequest objetos (9) actualmente inéditos no fio 1. Assegurar que este objecto ou o seu pai (tal como um SPWeb ou SPSite) está a ser devidamente dispostos. Id alocação para este objeto: {56D66DBA-AE72-42DF-A70F B45E05A60A08} Rastreamento de pilha de alocação atual:
em Microsoft.SharePoint.SPRequestManager.Add (SPRequest pedido, compartilhável Boolean)
em Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity (Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte [] UserToken, String userName, Boolean bIgnoreTokenTimeout, Boolean bAsAnonymous)
em Microsoft.SharePoint.SPWeb.InitializeSPRequest ()
em Microsoft.SharePoint.SPWeb.EnsureSPRequest ()
em Microsoft.SharePoint.SPWeb.get_Request ()
em Microsoft.SharePoint.SPWeb.InitWebPublic ()
em Microsoft.SharePoint.SPWeb.get_Exists ()
em Microsoft.SharePoint.Publishing.CachedObjectFactory.CreateWebFromUrl (String url)
em Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode..ctor (PortalWebSiteMapNode Webnode, nó SPNavigationNode, PortalSiteMapNode parentNode, tipo NodeTypes, String url, título String, descrição String)
em Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode.CreateSPNavigationSiteMapNode (PortalWebSiteMapNode Webnode, nó SPNavigationNode, PortalSiteMapNode parentNode)
em Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode.ProcessSPNavigationNode (nó SPNavigationNode, SPNavigationNode previousSibling, PortalSiteMapNode parentNode)
em Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMap.Node.PopulateNavigationChildren ()
em Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedTypes, NodeTypes includedHiddenTypes, OrderingMethod ordenação, método AutomaticSortingMethod, ascendente booleana, Int32 lcid)
em Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode.GetNavigationChildren (NodeTypes includedHiddenTypes)
em Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (nó PortalSiteMapNode, NodeTypes includedHiddenTypes)
em Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider.GetChildNodes (nó SiteMapNode)
em System.Web.SiteMapNode.get_ChildNodes ()
em Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable.System.Collections.IEnumerable.GetEnumerator ()
em System.Web.UI.WebControls.Menu.DataBindRecursive (nó MenuItem, IHierarchicalEnumerable enumeráveis)
em System.Web.UI.WebControls.Menu.DataBindRecursive (nó MenuItem, IHierarchicalEnumerable enumeráveis)
em System.Web.UI.WebControls.Menu.DataBindItem (artigo MenuItem)
em System.Web.UI.WebControls.Menu.PerformDataBinding ()
em System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect ()
em System.Web.UI.WebControls.BaseDataBoundControl.DataBind ()
em System.Web.UI.WebControls.Menu.DataBind ()
em System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound ()
em System.Web.UI.WebControls.Menu.EnsureDataBound ()
em System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender (EventArgs e)
em System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e, Boolean registerScript)
em System.Web.UI.WebControls.Menu.OnPreRender (EventArgs e)
em Microsoft.SharePoint.WebControls.AspMenu.OnPreRender (EventArgs e)
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Control.PreRenderRecursiveInternal ()
em System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
em System.Web.UI.Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
em System.Web.UI.Page.ProcessRequest () no System.Web.UI.Page.ProcessRequestWithNoAssert (HttpContext context)
em System.Web.UI.Page.ProcessRequest (HttpContext context) em ASP.VIEWPAGE_ASPX_2077083467.ProcessRequest (HttpContext context)
em System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
em System.Web.HttpApplication.ExecuteStep (IExecutionStep etapa, Boolean & completedSynchronously)
em System.Web.HttpApplication.ApplicationStepManager.ResumeSteps (erro de exceção)
em System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (HttpCont

Foi útil?

Solução

Stefan Gossner 's post parece responder à pergunta. A questão não é que os objetos SPWeb não estão sendo fechados, mas que uma vez que um determinado limite (o padrão é 8) de alocações são atingidos, o aviso é criado no log. Dependendo de sua estrutura do site o número que será criada irá variar. Dada a natureza aninhada de navegação, os objetos são mantidas abertas, enquanto a sub árvore é atravessada. Assim, os objetos são corretamente descartados, é apenas que mais de 8 (por padrão) estão sendo mantidas abertas em um determinado momento.

Veja esta questão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top