2012-07-09 75 views
4

Global,作为替代应用AutoEventWireups,似乎事件暴露最底层的应用程序事件(BeginRequest, AuthorizeRequest, Error等),以及一组非同步方法,如中AddOnBeginRequestAsync等。但是,我找不到ApplicationStart的等效事件!手动添加应用程序启动事件处理程序的构造

所以我的问题是,无论如何订阅'相同的'事件AutoEventWireup方法Application_(On)Start被吸引到?

public class Global : HttpApplication 
{ 
    public Global() 
    { 
     // I can do this ... 
     base.BeginRequest += new EventHandler(Global_BeginRequest); 
     // Or even AddOnBeginRequestAsync(); 

     // But how can I do this? 
     base.ApplicationStart += new EventHandler(GlobalApplication_Start); 
    } 

    protected void Global_BeginRequest(object sender, EventArgs e) 
    { 
     // ... 
    } 

    protected void Global_ApplicationStart(object sender, EventArgs e) 
    { 
     // ... 
    } 
} 

(出于兴趣......有没有办法关掉在Global.asax中AutoEventWireups?使用AutoEventWireup =“false”属性似乎只在aspx页面工作)

编辑 - ApplicationStart和ApplicationEnd似乎是不代表HttpApplication events的特殊方法。所以我可能会完全吠叫错误的树。

编辑 回复:为什么我需要这个?不幸的是,公司客户有一个框架,新应用程序需要继承他们的定制HttpApplication类,而FWR,他们的HttpApplication已经实现了自动装配Application_(On)Start,这意味着我需要找到另一种方式来重写框架连接,所以我可以引导我的IoC容器和Automapper映射。根据劳埃德的回答,我也可以在ctor或Init()中引导,尽管这不是quite the same。最终,我能够更改企业框架以允许多个订阅。

+0

这样做的最终目标是什么?可能有更好的方法去做你正在努力完成的事情吗? – 2012-07-09 16:22:38

回答

3

你可以重写初始化:

public class MyApplication : HttpApplication 
{ 

    public override void Init() 
    { 
     base.Init(); 
    } 

} 

但是你的构造也可以很好的工作。

+0

谢谢劳埃德 - 我编辑了我的Q解释结果。 – StuartLC 2012-07-19 15:34:38

相关问题