Domanda

Mi chiedevo se c'è un buon modo per agganciare Application_Start di un sito di SharePoint 2007 quando si sviluppa una funzionalità? So che posso modificare direttamente il file Global.asax nella radice del sito, ma c'è un modo per farlo in modo che venga distribuito con la funzione?

Grazie!

È stato utile?

Soluzione

Questo è effettivamente possibile, ma non coinvolge il file Global.asax.

Molti esempi di Microsoft dimostrano il codice di cablaggio tramite Global.asax, ma questo non è un approccio basato sulle migliori pratiche quando si tratta di SharePoint. Idealmente, il codice dovrebbe essere impacchettato come Funzionalità e distribuito tramite WSP (come già sapete).

La chiave sta nell'implementare il codice in questione come un HttpModule (ovvero un tipo che implementa l'interfaccia IHttpModule) e nel collegarlo alla pipeline ASP.NET che serve l'applicazione SharePoint. In parole povere, questi sono i passaggi:

  1. Crea una classe che implementa l'interfaccia IHttpModule.
  2. Implementa il metodo Init nel tuo HttpModule; questo viene chiamato quando HttpApplication (in questo caso, SPHttpApplication) è installato e ti dà l'opportunità di eseguire l'elaborazione, cablare delegati di eventi per altri eventi della pipeline, ecc.
  3. Crea un SPFeatureReceiver che aggiungerà e rimuoverà il tuo HttpModule dai file web.config di destinazione rispettivamente su attivazione e disattivazione. Ciò viene eseguito utilizzando il tipo SPWebConfigModification per aggiornare & Lt; httpModules & Gt; nodo nei file web.config di destinazione.
  4. Pacchetto tutto come funzionalità e distribuzione tramite WSP.

Per ulteriori informazioni sullo sviluppo di HttpModule, vedere http://msdn.microsoft .com / it-it / library / ms227673.aspx . Per ulteriori dettagli sul tipo SPWebConfigModification, vedere http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx .

Risultato: una classe in grado di gestire l'avvio dell'applicazione ed è distribuibile tramite Funzione. Non è richiesto l'hacking manuale dei file.

L'ho usato con successo in una serie di scenari, di recente con un provider di memorizzazione nella cache personalizzato (IVaryByCustomHandler) che aveva bisogno di registrarsi per richiamate con SPHttpApplication all'avvio.

Anche se la tua domanda è un po 'più vecchia, spero che questo ti aiuti!

Altri suggerimenti

La mia sensazione è che non sarà possibile. Application_Start viene chiamato dal runtime all'avvio del motore asp.net, quindi molto probabilmente non può esserci alcun modo per agganciare il gestore al di fuori della modifica di Global.asax - ad es. l'hook deve essere dichiarativo e persistente in quanto deve sopravvivere all'arresto / scaricamento dell'applicazione. Quindi, se devi scrivere su global.asax, immagino che potresti scrivere un Feature EventReceiver per eseguire la modifica.

A parte questo, puoi fornire maggiori dettagli sul perché? Forse ci sono altri angoli di attacco. L'idea di modificare al volo global.asax mi fa stare male. Non può essere buono.

Oisin

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top