vendredi 24 août 2007

"Vous essayez d'utiliser un objet SPWeb qui n'est plus disponible..."

Vous êtes en plein développement de webpart pour MOSS, vous vous efforcez de suivre les bonnes pratiques de développement en libérant les ojets après utilisation (via "using" par exemple), et vous tombez sur cette erreur:
"Vous essayez d'utiliser un objet SPWeb qui n'est plus disponible..."

Voilà le genre de code que vous avez écrit, et pourtant, qu'il ne faut pas faire lorsque lon manipule des objet Sharepoint comme les SPWeb :

using (SPWeb web = SPContext.Current.Web)
{
...
}

En fait, il s'agit d'une référence vers un objet existant, et pas de la création d'un nouvel objet... la fin du paragraphe détruit donc l'objet SPS (qui n'était pas le votre) et tout nouvel appel à ce SPWeb provoque le message d'erreur...

La solution consiste donc à ne pas libérer/détruire cet objet, et laisser Sharepoint le gérer... (plus de 'using' dans notre cas)

Pour les best practices Microsoft, c'est ici que ca se passe (US) :
http://msdn2.microsoft.com/en-us/library/ms778813.aspx

Aucun commentaire: