Денис Г правильный. Утилизация SPSite / SPWeb / etc важна, но убедитесь, что вы не утилизируете объекты, предоставленные вам API напрямую. Это тонко, но критично, иначе ваш ответ никогда не будет сгенерирован или даже вызовет ситуации прерывания потока.
По моему опыту, если мне нужна быстрая информация о свойстве SPSite или SPWeb, которое, я уверен, доступно для пользовательского контекста (либо авторизованного пользователя менеджера контента, либо анонимного), то использование объекта SPContext.Current. * Отлично подходит. В противном случае используйте метод RunWithElevatedPriveleges , чтобы обернуть ваш код, и внутри этой лямбды будет следующий шаблон:
SPSecurity.RunWithElevatedPrivileges(() =>
{
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
// stuff goes here elevated
}
}
});