Comment : ajouter et supprimer par programme des paramètres Web.config

Dernière modification : lundi 27 décembre 2010

S’applique à : SharePoint Foundation 2010

Dans Microsoft SharePoint Foundation, pour modifier les paramètres de web.config, vous pouvez utiliser la classe SPWebConfigModification de l’espace de noms Microsoft.SharePoint.Administration, qui vous permet d’enregistrer dynamiquement des entités. Ces modifications sont conservées dans la base de données de configuration où elles fonctionnent comme une sorte de fichier web.config virtuel qui sert effectivement de couche finale de la pile de fichiers .config pour l’application Web SharePoint Foundation. Les modifications deviennent effectives lors de l’appel de la méthode SPWebService.ApplyWebConfigModifications.

ConseilConseil

Parfois, ces modifications sont écrites dans le fichier physique web.config, mais comme SharePoint Foundation n’est pas régulier dans l’écriture des modifications dans le fichier physique, celui-ci ne reflète pas toujours chaque objet SPWebConfigModification qui a été appliqué. Lors du dépannage des modifications web.config, examinez les propriétés SPWebApplication.WebConfigModifications et SPWebService.WebConfigModifications ainsi que le fichier physique.

Note

Le code qui appelle ApplyWebConfigModifications ne fonctionne que s’il s’exécute dans le contexte utilisateur du serveur Web frontal.

Note

Pour plus d’informations sur une deuxième façon d’étendre les fichiers web.config, voir Comment : créer un fichier .config supplémentaire.

Exemple : ajout d’un paramètre

L’exemple suivant montre comment utiliser la classe SPWebConfigModification pour inscrire un assembly personnalisé.

Dim service As SPWebService = SPWebService.ContentService

Dim myModification As 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()
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();

Dans l’exemple, la propriété Name contient une instruction XPath qui identifie le nœud de manière unique, ce qui évite l’ajout de doublons du nœud au fichier.

L’appel de la méthode ApplyWebConfigModifications permet de planifier un travail du minuteur pour déployer les modifications dans la batterie de serveurs. Pour appliquer une modification de web.config à une application Web spécifique, ajoutez la modification à la collection des modifications de web.config pour l’application Web (WebConfigModifications). Par exemple, vous pouvez utiliser oWebSite.Site.WebApplication.WebConfigModifications.Add(MyModification) pour ajouter une modification de web.config à l’application Web parente d’un site Web spécifique. Vous devez toujours appeler ApplyWebConfigModificationsweb.config même si vous ajoutez une modification de web.config à une application Web unique.

Suppression des paramètres de configuration

Le code pour supprimer un paramètre de configuration est similaire, si ce n’est que votre modification consiste à supprimer un paramètre de configuration. L’exemple suivant montre comment supprimer un paramètre de configuration. Notez que votre code doit toujours appeler ApplyWebConfigModifications

SPWebConfigModification configModFound = null;
SPWebApplication webApplication = SPWebApplication.Lookup(new Uri("http://localhost/"));
Collection<SPWebConfigModification> modsCollection = webApplication.WebConfigModifications;

// Find the most recent modification of a specified owner
int modsCount1 = modsCollection.Count;
for (int i = modsCount1 - 1; i > -1; i--)
{
    if (modsCollection[i].Owner == "User Name")
    {
        configModFound = modsCollection[i];
    }
}

// Remove it and save the change to the configuration database  
modsCollection.Remove(configModFound);
webApplication.Update();

// Reapply all the configuration modifications
webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();

Voir aussi

Tâches

Comment : créer un fichier .config supplémentaire

Concepts

Utiliser des fichiers Web.config