2009-12-18 4 views
1

Nous avons une page maître personnalisée qui est déployée sur l'application Web MySite par ces instructions - http://www.sharepointblog.com/2008/07/sp2007-custom-master-pages-on-subsites.htmlsite de désactivation de fonction de collecte sur MySite

Cependant, nous exigeons la possibilité de désactiver la fonction de toutes les collections de sites qui sont dans l'application web MySite. La fonctionnalité est construite en tant que portée de collection de sites. Comment pourrions-nous les désactiver sur une application qui a potentiellement 3000+ MySites?

Répondre

4

Je voudrais construire une application console simple qui itère sur toutes les collections de sites (MySites) de votre application web et désactive la fonctionnalité. Vous devrez exécuter cette partie du code avec les privilèges d'élévation (SPSecurity.RunWithElevatedPrivileges) afin que vous ayez la permission de désactiver une fonctionnalité de collection de sites.

private static void DeleteWebsiteCollections() 
     { 
      SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://MySiteHostWebApp")); 
       SPSiteCollection mySites = webApp.Sites; 

       foreach (SPSite site in mySites) 
       { 
        site.Features.Remove(new Guid("place your feature id here")); 

        if (null != site) 
        { 
         site.Dispose(); 
        } 
       } 
      }); 
     } 
+0

C'est à peu près exactement comment nous l'avons fait, seulement je l'ai enveloppé dans une fonctionnalité qui a été déployée sur l'application web Mon site. Lorsque la fonction est désactivée, nous avons utilisé le code ci-dessus pour supprimer la fonctionnalité. Merci Flo! – esp

0

Ce code peut également être agrafé dans la page maître. Seulement site.Features.Remove (nouveau Guid ("placez votre identifiant de fonction ici")); devrait rester.

Questions connexes