Warnung vor nicht spannten Objekten in Microsofts eigenem SharePoint -Code
Frage
Ich fand viele 8L1N -Warnungen vor nicht spiegelten Objekten in den SharePoint -ULS -Protokollen. Das Interessante ist, dass die gesamte Stack Trace in meinem Code nichts zeigt. Ich bin mir nicht sicher, wonach ich in diesem Fall suchen muss? Kann es ein Konfigurationsfehler sein, der dazu geführt hat?
Wie kann ich diese Warnung vermeiden?
ULS -Protokoll unten:
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)
Lösung
Ja, manchmal folgt Microsoft nicht seinen eigenen Best Practices. Ich habe es hier erwähnt: Entsorgung von SPWEBs mit Spline OpenWeb erstellt
Es gibt nichts wirklich, was man dagegen tun kann.
Andere Tipps
Sie sollten Ihren Code überprüfen und die Sp -Site, SPWEB (und andere), die Sie selbst erstellen (wie in "New Spobject (URL)" und Websites.openweb ()), ordnungsgemäß entsorgen. Diese Objekte enthält nicht verwaltete Sprequest -Objekte, die nicht automatisch entsorgt werden.
Um Sie in diesem Prozess zu berücksichtigen, sollten Sie verwenden Spdisposecheck (Normalerweise stelle ich SPDisposecheck so ein, dass ich beim Erstellen meines Codes automatisch ausgeführt habe.)
Da ist ein weißes Papier auf msdn, das Ihnen weiterhin helfen kann. Seien Sie sich bewusst, dass nicht alle SP -SPITE- und SPWEB -Objekte entsorgt werden sollten. Die von spcontext entnommenen Splines und SPWEB sollten normalerweise nicht entsorgt werden. Für weitere Anleitungen darüber, wann nicht zu entsorgen, siehe Roger Lambs "Entsorgen Sie keine Anleitung".
Hinweis: Die obige Warnung sollte nicht mit der "potenziellen übermäßigen Anzahl von Sprequest -Objekten" verwechselt werden. Diese Warnung zeigt nicht unbedingt darauf hin, dass Ihre Objekte nicht entsorgt werden, nur dass Sie viel von ihnen geöffnet haben (wie bei der Durchführung einer Schleife durch aktuelle Netze). Diese Warnung kann gemindert werden, indem der Schellwert auf einen größeren Wert eingerichtet wird:
HKEY_LOCAL_MACHINE Software Microsoft Shared Tools Web Server -Erweiterungen Heapsetings
LocalSPRequestWarnCount = 50
Weitere Lesung:
Best Practices: Verwendung von verfügbaren Windows SharePoint Services -Objekten
Automatisieren Sie SharePoint dispose () Code -Bewertungen mit SPDisposecheck
SharePoint 2007/2010 „Entsorgen Sie keine Anleitung“ + SPDisposecheck
Fehlerbehebung bei Spsie/SPWEB -Lecks in WSS V3 und Moss 2007
SharePoint 2007 und WSS 3.0 entsorgen Muster mit Beispiel
HTH Anders Rask