Il est fort possible que vous connaissiez le moyen de modification par programmation le fichier de configuration de votre application SharePoint grâce à la classe SPWebConfigModification, et si ce n'est pas le cas voici quelques pointeurs qui vont bien :
Mais on connait souvent moins l'existence de fichiers XML permettant d'appliquer des modifications aux fichiers de configuration lors de la création d'une application web. Ces fichiers sont présents dans le répertoire 12\CONFIG de vos serveurs SharePoint et doivent s'appeler "webconfig.[quelquechose].xml". Ici, les fichiers présents sur une installation de MOSS 2007 :
Si on jette un coup d'oeil à l'un de ces fichiers (ici webconfig.osrv.xml), on remarque que son contenu est plutôt compréhensible :
En effet, il est composé d'un noeud racine "<actions>" puis d'un ensemble de noeuds "<add>". En fait, il en existe d'autres. Voici une petite liste avec leur utilisation :
- add : ajoute un noeud au niveau du chemin XPath fourni avec l'attribut "path", par exemple l'ajout des appSettings :
- update : modifie les attributs d'un noeud défini par le chemin XPath + le nom du sous-noeud, par exemple ici l'assignation du provider "CurrentNavSiteMapProvider" par défaut et l'activation des sitemapproviders :
<update path="configuration/system.web">
<siteMap defaultProvider="CurrentNavSiteMapProvider" enabled="true"/>
</update>
- remove : (au hasard) retire un noeud du fichier de configuration, méthode inverse de l'add, par exemple retrait de filters:
Pour la présence des attributs "id" dans les fichiers déployés par défaut et leur utilité, je suppose que c'est un marqueur à rapprocher du "owner" des SPWebConfigModifications.
[Mise à jour importante] Cet attribut "id" est primordial pour les ajouts et suppressions. En effet, cet identifiant permet à SharePoint de garder une trace de l'ajout / suppression et évite ainsi dans le cas de l'ajout de créer des doublons lors de lancements ultérieurs de la commande "stsadm -o copyappbincontent". Générez donc un identifiant unique (Guid) et utilisez le. Pour ceux qui ne trouvent pas GenGuid.exe, il existe un (en fait plein) de générateurs en ligne : http://www.guidgenerator.com/ (celui à le mérite de se mémoriser facilement)
Petit rappel cependant : évitez de faire ce que font certains de ces fichiers à savoir ajouter un SafeControl, le système de déploiement (solutions SharePoint) sait très bien le faire !
Allez, enchaînons sur 2 cas pratiques :
- j'aimerai bien avoir automatiquement le mode debug activé sur mes environnements de dev
- j'aimerai aussi avoir directement le support de l'AJAX ASP.Net
C'est parti !
Donc pour commencer, il faut que je crée un fichier xml obéissant à la règle de nommage "webconfig.[nomperso].xml". Je vais l'appeler webconfig.spdev.xml.
A l'intérieur, je vais ajouter les entrées suivantes :
- un "update" pour passer l'attribut callstack à true du noeud configuration/SharePoint/SafeMode
- un autre "update" pour passer l'attribut debug à true du noeud configuration/system.web/compilation
- tant qu'à faire, un "update" pour passer les customerrors à Off
- et pour finir, l'ajout de l' httpHandler suivant :
<add verb="GET" path="ScriptResource.axd"
type="Microsoft.Web.Handlers.ScriptResourceHandler, Microsoft.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>
Ce qui va me donner le fichier suivant (vous pouvez aussi le récupérer ici):
Vous n'avez plus qu'à créer vos applications web et, oh bonheur, vos modifications seront appliquées !
Cerise sur le gâteau, si vous exécutez la commande "stsadm -o copyappbincontent" sur votre serveur, ce fichier sera appliqué à tous les sites web déjà créés. Dans le cadred d'une ferme de serveur, la commande est à lancer sur chacun des serveurs.
Pour finir, il existe bien un article concernant ce système dans le SDK, mais un peu court à mon goût : How To- Add Custom Configuration Settings to Extend a Web Application
Mon petit doigt me dit que ça doit vous donner quelques idées... ;)
Gat, SPModificateur