Должен ли я избавиться от этого SPWeb? - PullRequest
6 голосов
/ 13 июня 2011

Я надеюсь, что кто-нибудь может мне помочь.Мне нужно получить корневой веб-сайт текущего сайта из SPContext.Это легко сделать с помощью следующего

SPContext.Current.Site.RootWeb

. Мне нравится идея, что объект SPSite здесь, на SPContext.Current. Site .RootWeb не должен быть утилизирован, но чтооб объекте SPWeb, который я получаю с SPSite.Будет ли после удаления SPSite уничтожена корневая сеть SPWeb?Или мне нужно избавиться от него самому?

Ответы [ 3 ]

6 голосов
/ 14 июня 2011

Звонки на SPSite.RootWeb не должны утилизироваться.Удаление SPSite также приведет к удалению RootWeb.

В SPDisposeCheck есть ошибка, которая помечает, если вы ее утилизируете, и если вы этого не сделаете (проклятый в любом случае!), Я подробно рассказал, как я решил эту проблему в этом сообщении , поскольку вы не можете использовать атрибут SPDisposeCheckIgnore в блоках с повышенными привилегиями.

4 голосов
/ 13 июня 2011

Нет, ты не должен. Вы должны распоряжаться только объектами, которые вы контролируете. Поскольку контекст является чем-то, что создано SharePoint, вы не избавляетесь от этого, поскольку другие объекты могут зависеть от этого.

Если бы вы создавали свой собственный экземпляр SPWeb из свойств этих объектов, его нужно было бы утилизировать. Т.е. ..

using (SPSite site = new SPSite(SPContext.Current.Site.RootWeb.Url))
using (SPWeb web = site.OpenWeb()) {
 // do something
}

Вот статья о передовых практиках утилизации объектов SharePoint.

http://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx

0 голосов
/ 13 июня 2011

Обычно вы должны использовать SPSite и SPWeb в условии использования.

using (SPSite site = new SPSite("http://mysite.sharepoint.com"))
{
    using (SPWeb web = site.OpenWeb())
    {
        // TODO: code for using SPWeb object
    }
}

Это автоматически приведет к правильному освобождению объекта SPWeb после того, как вы покончили с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...