2009-10-07 51 views
4

我正在開發一個像網站應用程序的插件。由於要求,它將與主要網站(我沒有源代碼)處於相同的物理路徑和相同的應用程序池中。所以他們都共享相同的Web.config和一些其他的依賴關係。ASP.NET應用程序開始時不使用Global.asax

我需要在應用程序啓動時爲第三方依賴項設置許可證,但我無法訪問Global.asax後面的代碼,因爲該代碼由不同的公司擁有。

那麼,是否有一種替代方法將事件附加到Application Start而不涉及Global.asax,或者是我唯一的解決方案來繼承/擴展當前的Global.asax?

回答

9

您可以使用HTTP模塊:

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

您可以使用WebActivator如果你知道你的目標項目都將.NET 4.0或更高版本。

https://github.com/davidebbo/WebActivator

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

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

注意你也有之前或之後在Global.asax的Application_Start()函數選擇運行 - 這個例子之後運行。

相關問題