Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SharePoint et plus...

Les technologies de développement Web Microsoft en français dans le texte.
[SharePoint 2007] Déploiement de paramétrage(s) dans le(s) web.config
Il est question dans ce billet de discuter des méthodes de déploiement de paramétrages dans le fichier web.config d'une application web SharePoint, aussi bien à la création d'une nouvelle application, que dans le cas d'une modification incrémentale sur des applications existantes.

La méthode la plus "naturelle" consiste à intégrer ces paramétrages dans votre solution SharePoint (WSP). Pour ceux qui ne connaissent pas le principe, voici comment cela fonctionne:

Lors de la création d'une application web, WSS copie le web.config depuis C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG vers le dossier racine de l'application web. Avant de copier ce fichier, WSS vérifie l'existence de fichiers du type webconfig.*.xml dans le dossier CONFIG et fusionne le contenu de ces fichiers avec le web.config.

Exemple de fichier webconfig.*.xml:
<actions>
   <add path="configuration/SharePoint/SafeControls">
      <SafeControl
         Assembly="System.Web, Version=1.0.5000.0, Culture=neutral,
            PublicKeyToken=b03f5f7f11d50a3a"
         Namespace="System.Web.UI.WebControls"
         TypeName="*"
         Safe="True"/>
   </add>
   <remove path="configuration/SharePoint/RuntimeFilter"/>
   <add path="configuration/SharePoint">
      <RuntimeFilter
         Assembly="Company.Product, Version=1.0.1000.0,
            Culture=neutral, PublickKeyToken=1111111111"
         Class="MyRuntTimeFilter",
         BuilderUrl="MyBuilderUrl"/>
   </add>
</actions>


Vous pouvez ensuite packager ce fichier webconfig.*.xml dans votre wsp et modifier le manifest.xml en conséquence:
<Solution xmlns=”http://schemas.microsoft.com/sharepoint/” SolutionId=”GUID”>
<RootFiles>
   <RootFile Location=”CONFIG
\webconfig.myname.xml”/>
</RootFiles>
...
</Solution>


Mais malheureusement, ce système n'est valable que pour la création d'une nouvelle application web...

Imaginons maintenant, que vous ayez une solution WSP déjà déployée sur plusieurs applications web de votre ferme et que vous ayez besoin de modifier "en masse" des fichiers web.config existants.
Par exemple, une nouvelle webpart à été ajouté à votre solution et vous souhaitez la mettre à disposition sur les sites existants. Vous avez donc peut être besoin de rajouter un tag SafeControl sur plusieurs web.config d'applications existantes.

Quelles sont les solutions qui s'offrent à nous ?
  • à la main: Nan je déconnes...

  • La commande stsadm.exe -o copyappbincontent permet de copier les fichiers spécifiques aux application du dossier 12\CONFIG vers les dossiers appropriés des applications. Mais attention: toutes les applications (sauf l'administration centrale) sont impactées et il est nécessaire d'effectuer cette opération sur CHACUN des frontaux. De plus, si vous aviez déjà déployé des paramètres avec un fichier webconfig.*.xml, vous risquez de vous retrouver avec des déclarations en double !

  • La classe SPWebConfigModification de Microsoft.SharePoint.Administration.dll permet d'écrire des nœuds et des attributs dans le web.config. Vous pouvez donc utiliser cette classe dans un FeatureReceiver pour ajouter le noeud à l'activation et le supprimer à la désactivation.
    Exemple d'utilisation de SPWebConfigModification :
    SPWebService service = SPWebService.ContentService;
    SPWebConfigModification myModification = new SPWebConfigModification();
    myModification.Path = “configuration/SharePoint/SafeControls”;
    myModification.Name = “SafeControl[@Assembly='MyCustomAssembly'][@Namespace='MyCustomNamespace'][@TypeName='*'][@Safe='True']“;
    myModification.Sequence = 0;
    myModification.Owner = “User Name“;
    myModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
    myModification.Value = “<SafeControl Assembly=’MyCustomAssembly’ Namespace=’MyCustomNamespace’ TypeName=’*’ Safe=’True’ />”;
    service.WebConfigModifications.Add(myModification);
    /*Call Update and ApplyWebConfigModifications to save changes*/
    service.Update();
    service.ApplyWebConfigModifications();


  • Utiliser le web.config Modification Manager téléchargeable à cette adresse:
    http://blog.thekid.me.uk/archive/2007/03/24/web-config-modification-manager-for-sharepoint.aspx

En conclusion, la mise à jour des fichiers de config est une opération délicate qui doit être automatisé mais avec beaucoup de prudence. La solution du SPWebConfigModification me semble la plus sûre, à condition de bien tester vos modifications, mais doit être utilisée en complément des fichiers webconfig.*.xml qui serviront toujours en cas de remontée après un crash par exemple.

La discussion est ouverte !
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 8 octobre 2009 11:56 par seb_moss2k7
Classé sous : , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 6 heures et 40 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59