我正在为网站开发一个类似应用程序的插件。由于要求,它将与我没有源代码的主网站位于相同的物理路径和相同的应用程序池中。所以它们都共享相同的 Web.config 和一些其他依赖项。
我需要在应用程序启动时为第三方依赖项设置许可证,但我无法访问 Global.asax 背后的代码,因为该代码归另一家公司所有。
那么,是否有另一种方法可以在不涉及 Global.asax 的情况下将事件附加到 Application Start,或者是我继承/扩展当前 Global.asax 的唯一解决方案?
我正在为网站开发一个类似应用程序的插件。由于要求,它将与我没有源代码的主网站位于相同的物理路径和相同的应用程序池中。所以它们都共享相同的 Web.config 和一些其他依赖项。
我需要在应用程序启动时为第三方依赖项设置许可证,但我无法访问 Global.asax 背后的代码,因为该代码归另一家公司所有。
那么,是否有另一种方法可以在不涉及 Global.asax 的情况下将事件附加到 Application Start,或者是我继承/扩展当前 Global.asax 的唯一解决方案?
您可以使用 HTTPModule:
public class MyModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
...
}
#endregion
}
网络配置
<httpModules>
<add name="MyModule" type="MyNamespace.MyModule, MyAssembly" />
</httpModules>
如果您知道您的目标项目都是 .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() 函数之前或之后运行 - 此示例在之后运行。