Когда вызывать Dispose при передаче SPContext.Site в библиотеку классов?

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

  •  10-12-2019
  •  | 
  •  

Вопрос

Я просто хочу немного проверить здравомыслие по этому поводу!

Я смотрю на многие классы, которые имеют SPSite или SPWeb в качестве конструктора класса.

Класс создается с использованием SPContext.Site как параметр SPSite

например

public MyClass {
  SPWeb _web;
  public MyClass(SPSite site) {
    _web = site.RootWeb;
  }
  // Other methods that make use of _web
}

Должен _web быть утилизированы?Является ли _web просто указателем на SPContext.Site.RootWeb или существует другая копия SPWeb от этого нужно избавиться?

Я знаю это с SPContext.Site.OpenWeb() тебе следует позвонить Dispose().

А как насчет вышеупомянутого использования?

Будет проходить SPSite / SPWeb поскольку присвоение его локальной переменной всегда имеет ссылку на одну и ту же SPContext ?

Это было полезно?

Решение

В твоем случае _web не нужно утилизировать, поскольку вы получаете его из RootWeb и веб-объекты, полученные из RootWeb не нужно утилизировать.

ЭИДТ

Кроме того, если SPSite Объект, передаваемый в качестве параметра конструктору, является производным от SPContext, его не нужно утилизировать.В противном случае его необходимо разместить либо в вызываемом классе, либо в вызывающем классе, в зависимости от требований.

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

Не вызывайте Dispose() явным образом для свойства SPSite.RootWeb.Очистка удаления будет выполняться автоматически SharePoint и платформой .NET.Для существующих настроек SharePoint рекомендуется удалить явный RootWeb Dispose, чтобы избежать пограничного случая, когда SPContext.Current.Web равен SPSite.RootWeb.Проблемы могут возникнуть при удалении RootWeb, полученном из любого варианта SPContext (например:SPContext.Site.RootWeb, SPContext.Current.Site.RootWeb и GetContextSite(Context).RootWeb ).

Для получения дополнительной информации посетите...MSDN

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