Предупреждение о неиспользованных объектах в собственном коде SharePoint от Microsoft

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/1181

  •  16-10-2019
  •  | 
  •  

Вопрос

Я нашел много предупреждений 8L1N о неисспозимых объектах в журналах SharePoint ULS. Интересно, что вся трассировка стека не показывает ничего в моем коде. Я не уверен, что искать в этом случае? Может ли это быть ошибкой конфигурации, которая привела к этому?

Как я могу избежать этого предупреждения?

Журнал ULS ниже:

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)
Это было полезно?

Решение

Да, иногда Microsoft не следит за своими лучшими практиками. Я упомянул это здесь: Утилизация SPWEB, созданных с использованием SPSite OpenWeb

Вы ничего не можете с этим поделать.

Другие советы

Вы должны просмотреть свой код и правильно утилизировать SPSITE, SPWEB (и другие), которые вы создаете сами (как в «Новом спибском (URL)» и sites.openweb ()). Эти объекты содержат неуправляемые объекты Sprequest, которые не будут автоматически утилизироваться.

Чтобы подтвердить вас в этом процессе, вы должны использовать Spdisposecheck (Я обычно устанавливаю SpdisposeCeck для автоматического запуска при создании своего кода).

Есть белая бумага На MSDN, который может помочь вам. Имейте в виду, что не все объекты SPSITE и SPWEB должны быть утилизированы. SPSITE и SPWEB, взятые из SPCONTEXT.CURRENT обычно не должны быть утилизированы. Для дальнейшего руководства, когда нет Утилизировать, см. Roger Lambs «Не утилизируйте руководство».

ПРИМЕЧАНИЕ. Приведенное выше предупреждение не следует путать с «потенциальным чрезмерным количеством объектов Sprequest ..» предупреждение в журнале ULS. Это предупреждение не обязательно указывает на то, что ваши объекты не утилизируются, просто вы открыли их много (например, при выполнении цикла через текущие веб -сайты). Это предупреждение может быть смягчено путем настройки Treshold до большего значения:

Hkey_local_machine Software Microsoft Shared Tools Extensions Heapsettings

    LocalSPRequestWarnCount = 50

Дальнейшее чтение:

Лучшие практики: использование одноразовых объектов SharePoint Services

Automate SharePoint Dispose () обзоры кода с помощью spdisposecheck

SharePoint 2007/2010 «Не утилизируйте руководство» + Spdisposecheck

Устранение неполадок SPSITE/SPWEB утечки в WSS V3 и Moss 2007

SharePoint 2007 и WSS 3.0 утилизируют паттерны на примере

HTH Anders Rask

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top