程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET應用程序生命周期趣談(三) HttpModule

ASP.NET應用程序生命周期趣談(三) HttpModule

編輯:關於ASP.NET

在之前的文章中,我們提到過P_Module(HttpModule)這個能干的程序員哥們兒,它通過在項目經理 HttpApplication那裡得到的授權,插手整個應用程序級別的事件處理。所有的HttpModule都要實現 IHttpModule接口,那麼我們看IHttpModule的定義:

namespace System.Web
{
     public interface IHttpModule
     {
         void Dispose();
         void Init(HttpApplication context);
     }
}

可以看到,HttpModule 主要就做了兩件事,一個就是大家都明白的釋放資源Dispose(),另一個則是 初始化。用什麼初始化呢?當然是HttpApplication。剛才已經說過,P_Module程序員是經過了項目經理 HttpApplication的授權了的,這裡我們就可以看到,初始化方法參數就是 HttpApplication對象,那麼 HttpModule又是怎麼處理應用程序級別的事件的呢?且看:

我們可以看到,項目經理HttpApplication可是實實在在的放權啊,它非常的相信P_Module可以做好這 些事情,所以在初始化方法 Init(HttpApplication context)中,程序員P_Module可以注冊很多事件,比 如說常用的BeginRequest, EndRequest, AuthenticateRequest, AuthorizeRequest等等,還有一些其它 的不常用的事件我們就不再贅述。總而言之,HttpModule強大到可以插手整個應用程序周期的所有事件- --因為得到了充分授權嘛。下面是注冊BeginRequest事件示例代碼:

public void Init(HttpApplication context)
  {
      context.EndRequest+= new EventHandler(context_EndRequest);
  }

  private void context_EndRequest(object sender, EventArgs e)
  {
     //do something when the request end
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved