Pregunta

Encontré muchas advertencias de objetos indispuestos en los registros de SharePoint ULS. Lo interesante es que todo el rastro de la pila no muestra nada en mi código. ¿No estoy seguro de qué buscar en ese caso? ¿Puede ser un error de configuración que condujo a eso?

¿Cómo puedo evitar esta advertencia?

ULS registra a continuación:

An SPRequest object was not disposed before the end of this thread.  To avoid wasting system resources, dispose of this object or its parent (such as an SPSite or SPWeb) as soon as you are done using it.  This object will now be disposed.  Allocation Id: {DBFA1F95-40DF-4AB6-BE88-3AE39F7E4E1F}  This SPRequest was allocated at    at Microsoft.SharePoint.Library.SPRequest..ctor()     at Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity(Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte[] UserToken, String userName, Boolean bIgnoreTokenTimeout, Boolean bAsAnonymous)     at Microsoft.SharePoint.SPWeb.InitializeSPRequest()     at Microsoft.SharePoint.SPWeb.EnsureSPRequest()     at Microsoft.SharePoint.SPWeb.get_Request()     at Microsoft.SharePoint.SPWeb.get_All...  
06/03/2009 10:21:05.10* w3wp.exe (0x170C)                       	0x10F8	Windows SharePoint Services   	General                       	8l1n	High    	...Properties()     at Microsoft.SharePoint.ApplicationPages.PermissionSetupPage.GetParentWebAssociatedGroups()     at Microsoft.SharePoint.ApplicationPages.PermissionSetupPage.OnLoad(EventArgs e)     at System.Web.UI.Control.LoadRecursive()     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     at System.Web.UI.Page.ProcessRequest()     at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)     at System.Web.UI.Page.ProcessRequest(HttpContext context)     at ASP._layouts_permsetup_aspx.ProcessRequest(HttpContext context)     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.H...
06/03/2009 10:21:05.10* w3wp.exe (0x170C)                       	0x10F8	Windows SharePoint Services   	General                       	8l1n	High    	...ttpApplication.IExecutionStep.Execute()     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)     at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)     at System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)     at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)     at System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)     at System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
¿Fue útil?

Solución

Sí, a veces Microsoft no sigue las mejores prácticas. Lo mencioné aquí: Eliminación de Spwebs creados usando SPSITE OpenWeb

No hay nada que realmente puedas hacer al respecto.

Otros consejos

Debe revisar su código y eliminar correctamente el SPSIT, SPWEB (y otros) que cree usted mismo (como en "New Spobject (URL)" y Sites.openWeb ()). Estos objetos contienen objetos de sprequest no administrados que no se eliminarán automáticamente.

Para assis en este proceso, debe usar SpdisposeCheck (Por lo general, configuro SpDisposeCheck para que se ejecute automáticamente cuando construyo mi código).

Hay una papel blanco en MSDN eso puede ayudarlo a más. Tenga en cuenta que no todos los objetos SPSIT y SPWEB deben estar dispuestos. El SPSITS y SPWEB tomados de SpContext. La corriente normalmente no debe estar dispuesta. Para más orientación sobre cuándo no Para deshacerse, ver Roger Lambs "No elimine la orientación".

Nota: La advertencia anterior no debe confundirse con el "número potencial excesivo de objetos de Sprequest ..." Advertencia en ULS Log. Esta advertencia no necesariamente indica que sus objetos no se están dispuestos, solo que ha abierto mucho de ellos (como al hacer un bucle a través de las redes actuales). Esta advertencia se puede mitigar configurando el basurero a un valor mayor:

HKEY_LOCAL_MACHINE Software Microsoft Herramientas compartidas Extensiones del servidor web Heepsettings

    LocalSPRequestWarnCount = 50

Otras lecturas:

Mejores prácticas: Uso de objetos desechables de Servicios de Windows SharePoint

Automatizar las revisiones de código de SharePoint Dispose () con SpDisposeCheck

SharePoint 2007/2010 "No elimine la guía" + SpdisposeCheck

Solución de problemas de fugas SPSIT/SPWEB en WSS V3 y Moss 2007

SharePoint 2007 y WSS 3.0 Deseche los patrones con el ejemplo

Hth Anders Rask

Licenciado bajo: CC-BY-SA con atribución
scroll top