Archive

Archive for mars 2009

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.

Catégories :Sharepoint, Web.Config, WSS Étiquettes : , ,

Gestion du Web.Config – partie 2


Pour appliquer une modification à tous les Web.config de l’ensemble des applications Web Sharepoint, il existe deux techniques.

La première consiste à créer un fichier XML dans le répertoire C:\Program Files\Fichiers communs\Microsoft Shared\web server extensions\12\config.  Le fichier doit se nommer webconfig.[partie_descriptive].xml. Le fichier doit être déposé sur chaque serveur de la ferme. L’image ci-dessous vous présente les fichiers qui se trouve de base dans le répertoire de Sharepoint.

repertoire_12_config

Voici un exemple très simple qui modifie le trust level à Full.

<?xml version="1.0" encoding="utf-8" ?>
<actions>
<update path="configuration/system.web">
<trust level="Full" originUrl="" />
</update>
</actions>

Il est aussi possible d’ajouter (add) et d’enlever (remove) des éléments du Web.config. Notez que pour le add et le remove, il est fortement suggérer d’ajouter un id tel que présenter dans l’exemple ci-dessous. L’id est utilisé par Sharepoint pour qu’il ne fasse pas les modifications en double dans le Web.config

 <add path="configuration" id="{de21698f-16f3-46a1-879c-d00acd7b5678}">
  <appSettings />
 </add>

Lors de la création d’un application Web, le Web.config contiendra automatiquement vos ajustements. Pour les applications Web existantes, il faut lancer la commande stsadm -o copyappbincontent sur chaque serveur de la ferme.

Vous trouverez d’autres exemples dans les fichiers qui viennent de base avec le produit et sur le net notamment dans le blog de Gaëtan Bouveret (en français).

La seconde technique consiste à utiliser le modèle objet et d’ajouter les modifications dans la collection WebConfigModifications de l’objet SpWebService. Vous trouverez un exemple complet dans l’aide en ligne de MSDN à l’adresse suivante : http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx

Catégories :Sharepoint, Web.Config, WSS Étiquettes : , ,

Gestion du Web.Config – Partie 1


Après 3 semaines de vacances, je suis de retour reposé et prêt à continuer la diffusion de connaissances relatives à Sharepoint.

Débutons donc avec un sujet qui fait souvent jaser.  En effet sur les projets, on se pose souvent la question suivante : « Comment on fait pour modifier ou ajouter un élément dans le fichier Web.Config de l’application Web ».

Les prochains billets qui seront mis en ligne graduellement dans les prochains jours expliqueront donc comment faire lorsqu’on rencontre les situations suivantes :

Catégories :Sharepoint, Web.Config, WSS Étiquettes : , ,

Cohabitation site statique avec Sharepoint


Même si Sharepoint 2007 remplace le produit MCMS 2002, il y a de nombreuses différences entre les deux au niveau de la gestion du contenu web.

Prenons par exemple l’intranet ci-dessous qui est hébergé sous Sharepoint 2007. Les répertoires virtuels Ventes et Finance devront être migrés d’un seul coup dans Sharepoint. Avec MCMS 2002, il aurait été possible de migré tranquillement page par page les éléments des deux sections. Avec Sharepoint, dès que vous aurez créer un site Ventes dans ce dernier, plus aucune page contenue dans le répertoire virtuel IIS ne sera accessible. Vous serez donc obliger de migrer tout d’un coup.

cohabitation_intranet_moss

Cette différence est importante. Il faut en tenir compte dès le début dans le cadre d’un projet de migration d’un site intranet ou internet vers Sharepoint afin de bien planifier les ressources et la stratégie de migration.

Catégories :MCMS, Sharepoint Étiquettes : ,
%d blogueurs aiment cette page :