Question

Lors du test de ma solution, je reçois une erreur sur l'activation de la fonctionnalité:

Utilisation détectée de Sprequest pour un objet SPWeb précédemment fermé.Veuillez fermer les objets SPWeb lorsque vous avez terminé avec tous les objets obtenus d'eux, mais pas auparavant.

C'est la façon dont je reçois SPWeb:

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

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Du?

AVERTISSEMENT: votre fonctionnalité doit être scopée comme Web pour qu'il fonctionne évidemment;)

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);

}


Ne pas utiliser la fonctionnalité:

Sinon, utilisez le SPContext pour obtenir le Web root

SPContext.Current.Site.RootWeb

ou - pour la bande actuelle

SPContext.Current.Web

ou - pour une URL Web spécifique

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


à utiliser ci-dessus dans la fonction, vous auriez besoin d'utiliser les propriétés:

Utilisez les propriétés pour obtenir le site pour obtenir la racineWeb

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

}

ou - pour la bande actuelle

SPWeb web = properties.Feature.Parent as SPWeb;

ou - pour une URL Web spécifique

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

}

Autres conseils

Vous faites bien.Juste la portée de la fonctionnalité doit être Web.L'attribut "Parent" est toujours l'objet de la portée de la fonctionnalité.

Vous disposez également de l'objet avec l'utilisation.

Le seul problème avec SPContext est que vous ne pouvez pas activer la fonctionnalité de PowerShell car il n'y a pas de contexte HTTP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top