В чем разница между SPContext.Current.Web.URL и SPContext.Current.Сайтом при использовании объекта SPSite?

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

  •  10-12-2019
  •  | 
  •  

Вопрос

SPSite spsite1=new SPSite(SPContext.Current.Web.URL);

SPSite spsite2=SPContext.Current.Site;

В чем разница и когда мы решаем, какой из них использовать?

Я чувствую, что оба дают нам объект семейства сайтов.

Пример: SPWeb spweb=spsite1.RootWeb; будет означать то же самое, что spsite2.RootWeb; Тогда почему существует 2 способа сделать это?

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

Решение

SPSite spsite1=new SPSite(SPContext.Current.Web.Url); даст тебе SPSite объект.Но это будет объект семейства сайтов только тогда, когда SPContext.Current.Web.Url это корневая сеть.Если веб-объект является объектом подсайта, то SPSite объект не будет объектом семейства веб-сайтов.Второе утверждение SPSite spsite2=new SPSite(SPContext.Current.Site); является неправильным, потому что нет перегрузки SPSite который имеет SPSite в качестве параметра.

ОБНОВЛЕНИЕ

Если намерение состоит в том, чтобы получить rootweb, то второй - лучший способ сделать это, поскольку вы не создаете новый экземпляр SPSite объект.Более того, в первом случае вам нужно будет утилизировать SPSite объект, когда вы создаете новый, по сравнению со вторым, в котором SPSite извлекается через SPContext которые не должны удаляться явно.

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

Как site1, так и site2 возвращают один и тот же объект семейства веб-сайтов (SPSite).Вызывая свойство RootWeb для обоих объектов, мы можем получить один и тот же объект веб-сайта верхнего уровня (SPWeb).

Инструкция 1:SPSite spsite1=новый SPSite(SPContext.Current.Web.URL);

Процесс:Если мы находимся на дочернем сайте и вызываем приведенный выше код, сначала он получает текущий веб-URL дочернего сайта и передает его конструктору SPSite, чтобы получить текущий объект семейства сайтов.

Инструкция 2:SPSite spsite2 = SPContext.Current.Site Текущий сайт;

Процесс:Теперь мы находимся на дочернем сайте и вызываем приведенный выше код, который непосредственно извлекает объект семейства сайтов.Для получения SiteCollection не требуется искать параметр web url.

Результат:

spsite1.RootWeb и spsite2.RootWeb возвращают один и тот же веб-объект SPWeb верхнего уровня.

spsite1.OpenWeb() возвращает объект дочернего сайта (SPWeb), если мы находимся на дочернем сайте.spsite2.OpenWeb() возвращает объект сайта верхнего уровня (SPWeb), даже если мы находимся на дочернем сайте.

Для spsite1 мы должны вызвать метод dispose, чтобы удалить объект SPSite.Но для spsite2 sharepoint позаботится об удалении объекта SPSite.

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