Редактировать: Извините, я только что заметил, что вы получаете SpContext.Current.Web
. Это общий ресурс, и вы не должны называть его dispose, как указано @Servy. Пусть рамки позаботятся об этом для вас.
Вам необходимо избавиться от объектов SPWeb
. Вы можете либо позвонить Dispose
себя после того, как вы больше не нуждаетесь в них, или вы можете использовать using
заявление, которое автоматически распоряжается объект для вас:
private bool isSubSite()
{
using (SpWeb currWeb = SpContext.Current.Web){
using (SPWeb rootWeb = currWeb.Site.RootWeb){
if (currWeb.ID != rootWeb.ID)
return true;
return false;
}
}
}
Обратите внимание, что не существует никаких проблем возвращения внутри using
, так как этот код будет переведен в блок кода try...finally
позже с вызовом, который должен быть расположен внутри блока finally
, таким образом, он будет выполнен независимо от возвращаемой функции или отброшенных исключений.
Также обратите внимание, что вы не должны называть ни Dispose
, ни Close
на общих SpWeb
объектах. Поскольку это не так, вы можете безопасно их называть.
Disposing SPContext.Current.Web - отличная идея. –
Вы должны удалить это, теперь оно помечено как принятый ответ, и вы только что испортили плохой день @ user388969. –
Ну, я отредактировал его с правильной информацией, прежде чем он принял его в качестве ответа. Поэтому я не знаю, как я испортил его день, извините. Если бы это был я, я бы назвал ответ @Servy ответом на вопрос, потому что он правильно ответил на это передо мной. Но, очевидно, я не могу это выбрать. –