2014-01-22 62 views
2

我正在创建一个库,需要在ASP.NET请求生命周期的各个阶段运行一些代码。我如何注册处理程序的Init()外的HttpApplication事件()

通过重写HttpApplication.Init()并在其中注册各种处理程序来编写Web应用程序时很容易。但是,我想在Application_Start()期间从我的库中执行此操作。我不希望消费者必须重写Init()并从那里调用我的事件设置代码。

有什么办法可以达到这个目的吗?

这是我的理想设置:

// in the consumer's code 
protected void Application_Start() 
{ 
    // should ideally be able to register lifecycle event handlers from the line below 
    MyLibrary.Configure(...); 
} 
+0

IMO当你的图书馆开始(我_sup pose_它是一个控制库)... HttpApplication.Init()已经过了很长时间...然后他们必须这样做 –

+0

您的库可以不公开用户可以添加到的各种模块(实现了'IHttpModule')吗?组态?这是图书馆进入管道的常用方式,每个模块都是Init'ed –

+0

@Damien_The_Unbeliever:你能用一个例子来回答吗?特别是,我的库如何配置这些模块(这种挂钩到生命周期中只是库的一个功能,只是将整个库作为模块是不够的)。 – ChaseMedallion

回答

0

你应该只能够做

Global.asax的

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     MyLib.Configure(this); 
    } 
} 

这这里,指的是应用程序,并有大量的事件你可以订阅它,包括请求生命周期事件

+0

当多个HttpApplication实例被使用时,这不会遇到问题(请参阅http:///stackoverflow.com/questions/6697409/how-many-instances-of-an-application-object-can-run-per-application)? – ChaseMedallion

+0

即使您在同一个应用程序池中运行同一应用程序的多个实例,您也应该可以,它们将在独立应用程序域下运行。 – iamkrillin

+0

这似乎不同意我发布的SO问题的答案。它说HttpApplication实例在可能的情况下被重用,但是需要多个来同时处理多个请求 – ChaseMedallion

相关问题