[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

- 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