2012-07-09 78 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

相關問題