Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

[MOSS] Déployer des Settings Custom

Il arrive souvent chez un client qu'un besoin de settings custom sur son portail se fasse sentir. Aussi on utilise les appSettings du web.config afin de stocker ses informations. Malheureusement, bien trop souvent ses settings sont déployés manuellement, et lorsque l'on a plusieurs frontaux ou Web Application, les actions manuelles sont multipliés et il y a donc potentiellement plus de source d'erreur.

C'est d'autant plus dommage que le mécanisme de déploiement de ses settings existe sous MOSS. Pour cela il faut utiliser le SPWebConfigModification qui est couplé à une feature.

Vous l'avez compris, il s'agit de faire une feature qui va appelé du code via le SPFeatureReceiver. Ensuite, pour allez plus loin vous pouvez définir cette feature dans un fichier onet.xml, mais c'est un autre sujet...

Voici donc le code associé à la feature, que nous allons détaillé :

public class CustomSiteSettings : SPFeatureReceiver { public override void FeatureActivated(SPFeatureReceiverProperties properties) { try { SPWebApplication webApp = ((SPSite)properties.Feature.Parent).WebApplication; foreach (SPFeatureProperty property in properties.Definition.Properties) { SPWebConfigModification webConfigModification = new SPWebConfigModification("add[@key='"+ property.Name+"']", "configuration/appSettings"); webConfigModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode; webConfigModification.Value = "<add key=\"" + property.Name + "\" value=\"" + property.Value + "\" />"; webApp.WebConfigModifications.Add(webConfigModification); } webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); webApp.Update(); } catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } }

Il y a ici trois étapes :

  1. Une boucle qui va chercher les settings dans la feature (nous détaillerons cette partie ensuite)
  2. l'ajout du settings via l'objet SPwebConfigModification
  3. la sauvegarde des settings dans le fichier web.config

Il est intéressant de noter que l'objet SPwebConfigModification utilise du XPATH pour se positionner dans le fichier web.config, cela pourrait vous être utile pour ajouter/modifier des tags autre que les appSettings.

Concernant les settings que nous déployons, ceux-ci sont stocké dans la définition de la feature (qui corresponde au SPFeatureProperty utilisé dans le code) comme suit :

<Feature Id="[GUID]" Title="[Title]" Description="[Description]" Version="1.0.0.0" Scope="Site" ReceiverAssembly="[Assembly Reference]" ReceiverClass="[Class Reference]" xmlns="http://schemas.microsoft.com/sharepoint/"> <Properties> <Property Key="settings1" Value="value1"/> <Property Key="settings2" Value="value2"/> </Properties> </Feature>

Comme vous le voyez rien de très compliqué, a chaque property correspond un setting avec le jeu Key/Value, il ne vous reste plus qu'a packager le tout dans une solution. Avouez que ce serait dommage de ne pas s'en servir :)

 

alex.

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 :
Publié vendredi 7 novembre 2008 11:48 par khamlon
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40

- [IIS] Erreurs web personnalisées par Blog de Jérémy Jeanson le 11-19-2014, 00:00

- BDD/TDD + Javascript par Fathi Bellahcene le 11-16-2014, 16:57

- Sécuriser sans stocker de mots de passe par Blog de Jérémy Jeanson le 11-15-2014, 08:58

- Où télécharger la preview de Visual Studio 2015 ? par Blog de Jérémy Jeanson le 11-13-2014, 21:33

- Les cartes sont partout ! par Le blog de Patrick [MVP Office 365] le 11-13-2014, 17:26

- [ #Office365 ] Courrier basse priorité ! par Le blog de Patrick [MVP Office 365] le 11-12-2014, 08:56

- [Oracle] Fichier oranfsodm12.dll absent du package client par Blog de Jérémy Jeanson le 11-10-2014, 20:44

- [ #Office365 ] Le chapitre 1 des Groupes est écrit, et alors ? par Le blog de Patrick [MVP Office 365] le 11-10-2014, 20:23