Avertissement d'objets propre code dans non légué Microsoft SharePoint
Question
J'ai trouvé beaucoup d'avertissements 8l1n d'objets dans les journaux non aliéné ULS SharePoint. La chose intéressante est que tout le tracé de la pile ne montre rien dans mon code. Je ne sais pas ce qu'il faut chercher dans ce cas? Peut-il être une erreur de configuration qui a conduit à cela?
Comment puis-je éviter cet avertissement?
journal ULS ci-dessous:
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)
La solution
Oui, parfois Microsoft ne suit pas ses propres meilleures pratiques. Je l'ai mentionné ici: Mise au rebut des spwebs créé à l'aide SPSite OpenWeb
Il n'y a rien que vous pouvez vraiment faire à ce sujet.
Autres conseils
Vous devriez vérifier votre code et jetez le SPSite, SPWeb (et d'autres), vous vous créez (comme dans "nouvelle SPObject (url)" et sites.OpenWeb ()). Ces objets contiennent des objets SPRequest non gérés qui ne seront pas automatiquement disposé.
Pour vous ASSIS dans ce processus, vous devez utiliser SPDisposeCheck (i généralement définie SPDisposeCheck pour exécuter automatiquement quand je construis mon code).
sur MSDN livre blanc qui peut vous aider futher. Sachez que tous les objets SPSite et SPWeb doivent être éliminés. Le SPSite de son et SPWeb pris de SPContext.Current ne devrait normalement pas être mis au rebut. Pour plus de conseils sur le moment pas de disposer, voir Roger Agneaux "ne pas des conseils Éliminez".
Note: l'avertissement ci-dessus ne doit pas être confondu avec le « Potentiallt nombre excessif d'objets SPRequest .. » avertissement dans le journal ULS. Cet avertissement ne, juste que vous ne sont pas disposés pas nécessairement vos objets ouverts beaucoup d'entre eux (comme lorsque vous faites une boucle à travers les réseaux actuels). Cet avertissement peut être atténué par la mise en place du seuil à une valeur plus grande:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Outils partagés du serveur Web Extensions \ HeapSettings
LocalSPRequestWarnCount = 50
Pour en savoir plus:
Meilleures pratiques: Utilisation Disposable Windows SharePoint Services Objets
automatiser SharePoint revues de code Dispose () avec SPDisposeCheck
Dépannage SPSite / fuites de SPWeb dans WSS v3 et MOSS 2007
SharePoint 2007 et WSS 3.0 modèles Éliminer par exemple
HTH Anders Rask