2009-12-03 5 views
1

Я запустил средство SPDisposeCheck на своих сборках SharePoint, но он сообщил о трех ошибках на SiteDefinitionAssembly, в котором также есть обработчик подготовки сайта. Насколько я понимаю, этот код генерируется самим шаблоном проекта, и мы не должны его менять. Ошибки я получаюSPDisposeCheck сообщает об ошибке в SiteProvisioning.RestoreDataViewOutZone method

ID: SPDisposeCheckID_160 
Module: SynergyOnline.NFER.ProjectSiteDefinition.dll 
Method: ProjectSiteDefinition.SiteProvisioning.RestoreDataViewInZone(Microsoft.S 
harePoint.SPWeb,System.String) 
Statement: local6 := local5.{Microsoft.SharePoint.SPFile}GetLimitedWebPartManage 
r(1) 
Notes: Dispose/Close was not called on SPLimitedWebPartManager.Web 
More Information: http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-20 
07-and-wss-3-0-dispose-patterns-by-example.aspx#SPDisposeCheckID_160 
---------------------------------------------------------- 


ID: SPDisposeCheckID_160 
Module: SynergyOnline.NFER.ProjectSiteDefinition.dll 
Method: ProjectSiteDefinition.SiteProvisioning.RestoreDataViewOutZone(Microsoft. 
SharePoint.SPWeb,System.String) 
Statement: local12 := local5.{Microsoft.SharePoint.SPFile}GetLimitedWebPartManag 
er(1) 
Notes: Dispose/Close was not called on SPLimitedWebPartManager.Web 
More Information: http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-20 
07-and-wss-3-0-dispose-patterns-by-example.aspx#SPDisposeCheckID_160 
---------------------------------------------------------- 


ID: SPDisposeCheckID_160 
Module: SynergyOnline.NFER.ProjectSiteDefinition.dll 
Method: ProjectSiteDefinition.SiteProvisioning.RestoreDataViewOutZone(Microsoft. 
SharePoint.SPWeb,System.String) 
Statement: local14 := local11.{Microsoft.SharePoint.SPFile}GetLimitedWebPartMana 
ger(1) 
Notes: Dispose/Close was not called on SPLimitedWebPartManager.Web 
More Information: http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-20 
07-and-wss-3-0-dispose-patterns-by-example.aspx#SPDisposeCheckID_160 
---------------------------------------------------------- 

Вот код, который gerenrated

private void RestoreDataViewInZone(SPWeb web, string filePath) 
     { 
      if (!File.Exists(filePath) || web == null) 
      { 
       return; 
      } 

      XmlDocument doc = new XmlDocument(); 
      try 
      { 
       doc.Load(filePath); 
      } 
      catch (XmlException) 
      { 
       return; 
      } 

      XmlNodeList xFixupFiles = doc.DocumentElement.SelectNodes("FixupFiles/FixupFile[@DataViewInZone=\"TRUE\"]"); 
      foreach (XmlNode xFixupFile in xFixupFiles) 
      { 
       XmlAttribute xRelativePath = xFixupFile.Attributes["RelativePath"]; 
       if (xRelativePath == null) 
       { 
        continue; 
       } 
       string relativePath = xRelativePath.Value; 

       SPFile file = web.GetFile(relativePath); 
       if (file == null) 
       { 
        continue; 
       } 

       SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); 
       SPLimitedWebPartCollection pageWebParts = manager.WebParts; 
       if (pageWebParts == null) 
       { 
        continue; 
       } 

       foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in pageWebParts) 
       { 
        DataFormWebPart dataForm = webPart as DataFormWebPart; 
        if (dataForm == null) 
        { 
         continue; 
        } 

        this.SubstituteGuidInZone(web, manager, dataForm, filePath); 
       } 
      } 
     } 

Я знаю, что объект SPWeb не расположен в функции, но я не уверен, если это необходимо утилизировать или не.

Нужно ли беспокоиться об этой ошибке?

Благодаря

ответ

Смежные вопросы