ASP.NET Application在不使用Global.asax的情况下启动

时间:2009-10-07 08:03:17

标签: asp.net configuration global-asax

我正在开发一个类似于网站应用程序的插件。由于要求,它将存在于与我没有源代码的主网站相同的物理路径和相同的应用程序池中。因此,它们共享相同的Web.config和其他一些依赖项。

我需要在应用程序启动时为第三方依赖项设置许可证,但我无法访问Global.asax背后的代码,因为该代码由其他公司拥有。

那么,是否有另一种方法可以将事件附加到Application Start而不涉及Global.asax,或者是我继承/扩展当前Global.asax的唯一解决方案?

2 个答案:

答案 0 :(得分:9)

您可以使用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>

答案 1 :(得分:2)

如果您知道目标项目都是.NET 4.0或更高版本,则可以使用WebActivator。

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()函数之前或之后运行 - 此示例随后运行。