2009-10-07 8 views
4

Je développe une application similaire à un plugin pour un site Web. En raison des exigences, il vivra dans le même chemin physique et le même pool d'applications que le site web principal pour lequel je n'ai pas le code source. Donc, ils partagent tous deux le même Web.config et d'autres dépendances.Application ASP.NET Démarrer sans utiliser Global.asax

Je dois définir une licence pour une dépendance d'une tierce partie au démarrage de l'application, mais je n'ai aucun moyen d'accéder au code derrière Global.asax car ce code appartient à une autre société.

Alors, existe-t-il une autre manière d'ajouter des événements à Application Start sans impliquer Global.asax ou est-ce que ma seule solution est d'hériter/d'étendre le Global.asax actuel?

Répondre

9

Vous pouvez utiliser un HttpModule:

public class MyModule : IHttpModule 
{ 
    #region IHttpModule Members 

    public void Dispose() 
    { 
    } 

    public void Init(HttpApplication context) 
    { 
     ... 
    } 

    #endregion 
} 

web.config

<httpModules> 
    <add name="MyModule" type="MyNamespace.MyModule, MyAssembly" /> 
</httpModules> 
2

Vous pouvez utiliser WebActivator si vous connaissez vos projets cibles seront tous .NET 4.0 ou plus.

https://github.com/davidebbo/WebActivator

[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(Bootstrapper), "Start")] 

public class Bootstrapper 
{ 
    public static void Start() 
    { 
     // Put everything in motion here 
    } 
} 

Notez que vous avez également la possibilité d'exécuter avant ou après la fonction Global.asax Application_Start() - cet exemple court après.

Questions connexes