Bonjour,
J'ai créé une feature qui à l'activation me lance la création de tous mes sites de mon intranet.
J'ai l'impression qu'il existe un déphasage entre son avancé dans le programme et les sites réellement créés car il n'arrive pas à trouver un site qui pourtant doit être créé... Je m'explique.
Mes sites à créer sont chargés dans une collection de classe contenant les noms de site à créer avec le nom de leur parent.
Je parcours donc ma collection, et je créé les sites en les rattachant au root ou au parent si parent il y a. Hors lorsque je veux récupérer le SPWeb du parent il ne le trouve pas, le allwebs ne contient pas tous mes sites alors qu'ils sont bien créés.
J'ai rajouté les Dispose, pensant que cela allait résoudre le problème, mais non...
Quelqu'un aurait-il une autre idée ?
Ci-dessous une portion du code.
Création du site
Méthode qui ne me retourne pas le site, et qui pourtant quand je la lance à posteriori me le retourne bien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 List<MaCustomClass> sites = UtilesSite.getCollectionSite(); foreach (MaCustomClass site in sites) { SPWeb newWeb = null; // Si Site parent autre que root if (site.HasParent()) { // Chargement du Web Parent SPWeb parent = UtilesSite.getSPWebFromName(web.Site, site.NomPere); newWeb = parent.Webs.Add(site.NomCourt, site.NomLong, "", (uint)1036, NameSiteTemplate, false, false); parent.Dispose(); } else { newWeb = web.Webs.Add(site.NomCourt, site.NomLong, "", (uint)1036, NameSiteTemplate, false, false); } newWeb.Dispose(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static SPWeb getSPWebFromName(SPSite site, string sName) { foreach (SPWeb web in site.AllWebs) { if (web.Name == sName) return web; } return null; }
Partager