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

- Intégration Yammer et SharePoint Online (Office 365), étape 1 … par Le blog de Patrick [MVP SharePoint] le 06-12-2013, 17:37

- [Dynamics CRM] Ajouter les dossiers de CRM au dossier Favoris d’Outlook par Christine Dubois le 06-10-2013, 15:50

- Visual Studio 2013 par Etienne Margraff le 06-04-2013, 10:26

- Configurer la collation SQL Server pour SharePoint par Blog de Jérémy Jeanson le 06-03-2013, 19:48

- Etendre le Team Web Access de TFS 2012 – Step 1: Création du plugin par Philippe Didiergeorges Aka Philess le 06-03-2013, 07:30

- Livre Blanc : Développer des applications NUI par Fathi Bellahcene le 06-01-2013, 11:35

- [Dynamics CRM 2011] Copier une vue d'entité par Christine Dubois le 05-29-2013, 13:20

- [Conf’SharePoint 2013] Mes présentations… par Le blog de Patrick [MVP SharePoint] le 05-28-2013, 09:04

- [wpdev] Storage bug in MediaLibrary.SavePicture par Kévin Gosse le 05-26-2013, 19:08

- VMMap en mode instrumentation sur système 64bit : attention à la plateforme cible du build .NET par CoqBlog le 05-25-2013, 22:25