2008-09-25 100 views

回答

3

如果您的會話和應用程序初始化代碼非常小且特定於應用程序,則使用起來很簡單。如果您想重用代碼,比如設置URL重寫,重定向或認證規則,使用HttpModule會更有用。 HttpModule可以覆蓋Global.asax文件可以包含的所有內容。他們也可以使用你的.config來移除和添加。

3

我以前用它來捕獲應用程序級別的錯誤,並在用戶會話到期時執行某些操作。

我也傾向於使用它來提供從web.config讀取值的靜態屬性。

我認爲這樣的東西沒問題,但我不會在那裏放更多的東西。

0

Global.asax可以繼承自己的繼承httpapplication的類。爲您提供更多選擇,並將您可能擁有的全部代碼放入類庫中。

編輯:有你的HttpApplication類(global.asax父)在一個單獨的類庫中也可以提高可重用性。雖然我同意使用HttpModules更適合於許多任務,但這仍然有許多用途,例如更簡潔的代碼。

0

我還沒有真正使用Global.asax。我一直使用它在傳統的ASP中是等價的,但主要與數據庫連接字符串等特定配置有關。 .net中的配置使得很多這些事情變得更容易。

但是如果你想實現應用程序和會話級別的事件,這就是你需要去的地方。

1

這是一個很好的地方抓住會議開始,甚至要求發起。其他人提到了錯誤處理方面的問題,但要小心從非asp.net線程(例如線程池或自定義線程)拋出的異常,因爲它們將繞過global.asax處理程序。就我個人而言,我總是有一個,我認爲它只是管道的一部分。

2
  • 初始化ASP.NET MVC。 :)
  • 自定義用戶驗證。
  • 依賴注入,如擴展Ninject HttpApplication。
1

我曾經使用Global.asax來處理諸如錯誤處理等事情,但是,我已經使用HttpModules來替換它,因爲我可以將它從一個項目複製到另一個項目,而無需編輯global.asax。

2

它是一種僵硬的飲料,只是要小心不要喝太多,你會沒事的。

我用它進行全局錯誤處理,並在mvc中設置路由。雖然你不想在那裏寫全局的page_init代碼。

如果您堅持使用應用程序級別的事件,並使大多數邏輯實際存在於在這些事件中被調用的類中,那麼使用全局構造就沒有問題。

1

使用Global.asax與HttpModule相比:你會被誘惑編寫難以重用的代碼,因爲它將被綁定到特定的應用程序。

0

Global.asax中的Session_Start事件是初始化會話變量的好地方。

相關問題