Вопрос

При тестировании моего решения я получаю ошибку на активацию функции:

Обнаружено использование SPREQUEST для ранее закрытого объекта SPWEB.Пожалуйста, закройте объекты SPWEB, когда вы закончите всеми объектами, полученными из них, но не раньше.

Это так, как я получаю SPWEB:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    using (SPWeb web = properties.Feature.Parent as SPWeb)
    {
        ClassOfMine.doYourStuff(web);
    }
}
.

Что я делаю не так?

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

Решение

Как насчет;

ПРЕДУПРЕЖДЕНИЕ. Ваша функция должна быть определена как в Интернете, чтобы она была очевидно;)

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  // No need to dispose the web istance, as indicated in the "Do not dispose" guidance
  SPWeb web = (SPWeb) properties.Feature.Parent; // added semicolon            

  ClassOfMine.doYourStuff(web);

}
.


не использует функцию:

Если не используйте SPContext, чтобы получить корневую сеть

SPContext.Current.Site.RootWeb
.

или - для текущей сети

SPContext.Current.Web
.

или - для определенного веб-адрена

SPContext.Current.Site.OpenWeb("Website_URL"))
.


Чтобы использовать выше в функции, вам нужно будет использовать свойства:

Используйте свойства, чтобы получить сайт, чтобы получить rootWeb

SPSite site = properties.Feature.Parent as SPSite;
using (SPWeb web = site.RootWeb)
{

}
.

или - для текущей сети

SPWeb web = properties.Feature.Parent as SPWeb;
.

или - для определенного веб-адрена

SPSite site = properties.Feature.Parent as SPSite;
using (SPWeb web = site.OpenWeb("Website_URL"))
{

}
.

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

Вы делаете правильно.Просто объем этой функции должен быть в Интернете.Атрибут «Родитель» всегда является объектом объема функций.

Вы также утилизируете объект с использованием.

Единственная проблема с SPContext - это то, что вы не можете активировать функцию от PowerShell, так как нет HTTP-контекста.

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