Accueil > Sharepoint, Web.Config, WSS > Gestion du Web.config – Partie 3

Gestion du Web.config – Partie 3

Pour modifier le contenu du Web.config d’un application Web, la meilleure technique consiste à utiliser le modèle objet et d’ajouter les modifications dans la collection WebConfigModifications de l’objet SPWebApplication.

Pour ce faire, je recommande de créer un feature de scope : WebApplication. Ceux qui ne sont pas familier avec le concept de feature peuvent retrouver la documentation dans l’aide en ligne de MSDN à l’adresse suivante : http://msdn.microsoft.com/en-us/library/ms460318.aspx

Le fichier feature.xml ci-dessous vous présente une exemple simple d’un feature de scope WebApplication.

<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
         Id="{DF82E481-709B-4918-A8A8-0CB65C37A297}"
         Scope="WebApplication"
         Title="FeatureFullTrust"
         Description="Modification au Web.Config de l'application Web pour changer le trust level à Full."
         Hidden="FALSE"
         AlwaysForceInstall="TRUE"
         ActivateOnDefault="FALSE"
         ReceiverAssembly="ProjetFulltrust, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec016fc89f371d43"
         ReceiverClass="ProjetFulltrust.FeatureFullTrust">
</Feature>

Ce feature, possède un ReceiverAssembly qui est dans le GAC. Dans le cas qui nous occupe, l’assembly est constitué d’une seule classe FeatureFullTrust. Cette classe implémente SPFeatureReceiver tel que présenté ci-dessous.

Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration

Public Class FeatureFullTrust
    Inherits SPFeatureReceiver

    ''' <summary>
    ''' Modification du noeud Trust du Web.Config de la WebApp pour y changer la valeur pour "Full"
    ''' </summary>
    Public Overrides Sub FeatureActivated(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)
        Dim webApp As SPWebApplication = DirectCast(properties.Feature.Parent, SPWebApplication)
        Dim modif As SPWebConfigModification = New SPWebConfigModification("level", "configuration/system.web/trust")
        modif.Owner = "FeatureFullTrust"
        modif.Sequence = 0
        modif.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute
        modif.Value = "Full"

        webApp.WebConfigModifications.Add(modif)
        webApp.Farm.Services.GetValue(Of SPWebService)().ApplyWebConfigModifications()
        webApp.Update()

    End Sub

    ''' <summary>
    ''' Retrait de la modification sur le noeud Trust du Web.Config de la WebApp
    ''' </summary>
    Public Overrides Sub FeatureDeactivating(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)

        Dim webApp As SPWebApplication = DirectCast(properties.Feature.Parent, SPWebApplication)

        For Each modif As SPWebConfigModification In webApp.WebConfigModifications
            If modif.Owner = "FeatureFullTrust" AndAlso modif.Name = "level" Then
                webApp.WebConfigModifications.Remove(modif)
                webApp.Update()
                webApp.Farm.Services.GetValue(Of SPWebService)().ApplyWebConfigModifications()
            End If
        Next

    End Sub

    Public Overrides Sub FeatureInstalled(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)
    End Sub

    Public Overrides Sub FeatureUninstalling(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)
    End Sub

End Class

Il ne reste qu’à empaqueter notre feature en solution, la déployer dans la ferme et activer la feature pour l’application Web désirée. Sharepoint se chargera de mettre à jour le Web.config sur tous les serveurs de la ferme.

Publicités
Catégories :Sharepoint, Web.Config, WSS Étiquettes : , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :