實作HttpModule代替Global.asax 處理各項事件

摘要:實作HttpModule代替Global.asax 處理各項事件

實作HttpModule可以取代Global.asax,來處理Request_startSession_Start Application_Error等事件的處理。看到這裡會有點疑問吧,既然兩者都一樣為何要使用

HttpModule?

它的優點在於不必和整個網站挷在一起,不需使用時可以直接在組態檔拿掉。

本例以當網頁發生錯誤時要作該事件的處理

實作步驟

1.新增類別並實作HttpModule

namespace Kim.Web

{

 public class ErrorModule : IHttpModule

 {

  #region IHttpModule 的介面方法

  public void Init(HttpApplication application)

  {

//註冊只要網頁發生錯誤的事件處理

   application.Error += new EventHandler(application_Error);  

  }      

  public void Dispose() { }

  #endregion

 

  public void application_Error(object sender, EventArgs e)

  {

    //主要程式處理

  }

 }

}

 

2.在網站註冊ErrorModule

說明:type="命名空間+類別名稱,組件名稱(Kim.Web.dll)"

<httpModules>

 <add  name="ErrorModule" type="Kim.Web.ErrorModule, Kim.Web" />

</httpModules>

 

參考網址

http://codebetter.com/blogs/karlseguin/archive/2006/06/12/146356.aspx