[SharePoint] Arrêter l’activation d’une feature depuis un Event Receiver

Les Features sont la pierre angulaire de pratiquement tous nos développements SharePoint pour en contrôler le déploiement et le retrait. Parfois, on veut pouvoir interdire leur activation si des contraintes ne sont pas satisfaites et on peut y arriver nativement avec les dépendances de Features.

Mais que peut-on faire si on souhaite gérer plus finement l’activation de nos Features pour interdire l’activation si certaines conditions ne sont pas respectées ?

 

Il m’est arrivé de vouloir interdire l’activation de 2 Features pour les rendre mutuellement exclusives en affichant un message d’erreur indiquant à l’utilisateur explicitement ce qui ne va pas. Un petit tour sur le net m’a permis de trouver différentes techniques pour gérer l’activation grâce, notamment, à un Feature Receiver et sa méthode FeatureActivated dans lequel on utilise un SPLongOperation qui navigue vers une page d’erreur, le cas échéant.

Ce genre de technique pose, néanmoins, 2 problèmes :

  • Dès le début de l’appel de cette méthode, la Feature est déjà considérée comme activée et donc, il faut gérer son retrait (en quelque sorte un retour arrière) si on choisit d’afficher une erreur.
  • Ca ne marche pas avec PowerShell/Visual Studio ! En effet, il n’y a pas toujours de contexte Web…

Si on retourne vers une approche plus .NET, on peut essayer de lancer une exception avec un message en paramètre :

image

La Feature n’a bel et bien pas été activée mais le message retourné n’est pas ce qu’on a demandé.

Voyons ce qui se passe si on lance une SPException à la place :

image

On obtient le bon message d’erreur qui est affiché tant dans une console que dans le navigateur !

 

On est encore loin du must qui serait avoir des activations variabilisées au runtime de nos Features mais on peut au moins les empêcher de s’activer n’importe comment avec quelques SPException bien placées.

 

Pierrick

Publié lundi 20 février 2012 16:40 par Pierrick CATRO-BROUILLET
Classé sous , ,
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 :

Commentaires


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