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

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25

- Etes-vous yOS compatible ? (3/3) : la feuille de route par Le blog de Patrick [MVP SharePoint] le 06-06-2014, 00:30

- [MSDN] Utiliser l'approche Contract First avec Workflow Foundation 4.5 par Blog de Jérémy Jeanson le 06-05-2014, 21:19

- [ #ESPC14 ] TH10 Moving mountains with SharePoint ! par Le blog de Patrick [MVP SharePoint] le 06-01-2014, 11:30