Question

Je me demandais s'il existait un bon moyen de se connecter à Application_Start d'un site SharePoint 2007 lors du développement d'une fonctionnalité? Je sais que je peux modifier directement le fichier Global.asax à la racine du site, mais existe-t-il un moyen de le faire pour qu'il soit déployé avec la fonctionnalité?

Merci!

Était-ce utile?

La solution

Cela est possible, mais n'implique pas le fichier Global.asax.

De nombreux exemples de Microsoft illustrent le code de câblage via Global.asax, mais il ne s’agit pas d’une approche conforme aux meilleures pratiques en ce qui concerne SharePoint. Idéalement, votre code devrait être packagé en tant que fonctionnalité et déployé via WSP (comme vous le savez déjà).

La clé consiste à implémenter le code en question en tant que HttpModule (c'est-à-dire un type qui implémente l'interface IHttpModule) et à le brancher dans le pipeline ASP.NET desservant votre application SharePoint. En gros, voici les étapes:

  1. Créez une classe qui implémente l'interface IHttpModule.
  2. Implémentez la méthode Init dans votre HttpModule; Ceci est appelé lorsque l'application HttpApplication (dans ce cas, SPHttpApplication) est configurée et vous donne la possibilité d'effectuer un traitement, de déléguer des délégués d'événements pour d'autres événements de pipeline, etc.
  3. Créez un SPFeatureReceiver qui ajoutera et supprimera votre HttpModule des fichiers web.config cibles lors de l'activation et de la désactivation, respectivement. Cette opération est effectuée à l'aide du type SPWebConfigModification pour mettre à jour le & Lt; httpModules & Gt; noeud dans les fichiers web.config cibles.
  4. Créez un package en tant que fonctionnalité et déployez-le via WSP.

Pour plus d'informations sur le développement de modules HttpModule, voir http://msdn.microsoft. .com / fr-us / library / ms227673.aspx . Pour plus d'informations sur le type SPWebConfigModification, voir http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx .

Résultat: une classe pouvant gérer le démarrage de l'application et pouvant être déployée via Feature. Aucun piratage manuel des fichiers requis.

Je l'ai utilisé avec succès dans un certain nombre de scénarios, notamment avec un fournisseur de mise en cache personnalisé (IVaryByCustomHandler) devant s'inscrire lui-même pour les rappels avec SPHttpApplication lors de son démarrage.

Bien que votre question soit un peu plus ancienne, j'espère que cela vous aidera!

Autres conseils

Mon sentiment est que ce ne sera pas possible. Application_Start est appelé par le moteur d’exécution au démarrage du moteur asp.net. Il n’est donc probablement pas possible d’attacher le gestionnaire en dehors de la modification de Global.asax - par exemple. le hook doit être déclaratif et persistant, car il doit survivre à l'arrêt / au déchargement de l'application. Donc, si vous devez écrire dans le fichier global.asax, vous pouvez écrire un Feature EventReceiver pour effectuer la modification.

Cela mis à part, pouvez-vous donner plus de détails sur le pourquoi? Peut-être existe-t-il d'autres angles d'attaque. L'idée de modifier Global.asax à la volée me fait mal au cœur. Cela ne peut pas être bon.

Oisin

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top