2010-10-12 159 views
6

我有一個名爲Global的類,它來自HttpApplication混淆global.asax?

奇怪的是,我看到裏面Global看起來像很多方法:

void Application_Start(object sender, EventArgs e) 
{ 
} 

的代碼是這種方法裏面肯定執行,因此該方法被從什麼地方調用,但在哪裏?該方法沒有標記爲重載?

其次,我從Global派生出一個類,我們稱之爲GlobalFoo

同樣,如果我創建了一個名爲Application_Start()的方法,它將在我的派生類中被調用,否則Global中的任何內容都不會被調用,因此我可能會從空類中派生。

任何人都可以提供任何建議嗎?我錯過了ASP.NET的一些基本部分嗎?

回答

1

so the method is being called from somewhere, but where?

此功能從應用程序池(從已分配給每個池)調用,以顯示你的應用程序的啓動/結束事件,並幫助您與初始化。

每個分配用於運行Web應用程序的池都運行這些函數。

asp。淨是幫助您創建不同的對象/代碼外部或不能夠同時運行,這就是爲什麼你看到所有已註冊的代碼運行的。它有助於創建不同思維的多個「啓動」例程。

is an example,該模塊只是他檢查安全協議自......你不必在你的代碼改變什麼,只是註冊。

-1

Global.asax文件是用於聲明和處理應用程序和會話級別的事件和對象的IIS Web服務器

上運行的ASP.NET網站的可選文件中的一些在這個關鍵事件文件是:

  • Application_Init:當應用程序第一次初始化時觸發。
  • Application_Start:應用程序第一次啓動時啓動。
  • Session_Start:當用戶的會話開始時第一次觸發。
  • Application_BeginRequest:每當有新的請求進入時觸發。
  • Application_EndRequest:應用程序終止時觸發。
  • Application_AuthenticateRequest:表示請求已準備好進行身份驗證。
  • Application_Error:在應用程序內發生未處理的錯誤時觸發。
  • Session_End:每當單個用戶會話結束或超時時觸發。
  • Application_End:應用程序結束或超時時觸發(通常用於應用程序清理邏輯)。

有關Global.asax事件的完整列表,請參閱「Global.asax Events」。

+0

我真的不關心事件本身,我很困惑他們在哪裏/如何被稱爲 – maxp 2010-10-12 12:06:12

0

IIS通過asp.net isapi過濾器調用不同的Global.asax事件。

也許this article將有助於解釋。