淺析IHttpModule和IHttpHandler
最近開發中涉及到一些使用IHttpModule和IHttpHandler,只是儲備不夠,抓緊查詢MSDN學習了一下,將學習點滴記錄一下。
一、IHttpModule
查看這個接口的代碼可以發現,它是由兩個方法組成:
public interface IHttpModule{ void Dispose(); void Init(HttpApplication context); }
看到兩個方法及方法標簽,就明白這個IHttpModule接口有什么作用了,Init方法中傳入了一個HttpApplication參數,它提供對 ASP.NET 應用程序內所有應用程序對象的公用的方法、屬性和事件的訪問,包括了HttpApplication下的方法、屬性和事件的訪問。那么具體有那些呢?
包括了所有我們經常會用到的一些對象,Application,Context,Event,Modules,Request,Response,Server,Session,Site,User,BeginRequest,EndRequest等等,其中Context中有個一個方法Context.RewritePath可以用來重寫URL的,也就是說只要你在App_code中添加一個繼承IHttpModule接口的類,并在webconfig中添加此Module后,這個類就可以處理全局的應用程序所有的方法、屬性和事件了。
1.針對常用的操作做了一個測試:
應用程序將向每個請求的頁面上輸出這個Module中的內容。
2.針對URL重寫測試如下:
說明,當有用戶請求頁面時如果請求路徑不包括custom則重寫URL,但是這個測試是失敗的,正在研究RewritePath這個方法的用法。
二、IHttpHandler
這個接口由一個屬性一個方法組成
public interface IHttpHandler{ bool IsReusable { get; } void ProcessRequest(HttpContext context); }
IsReusable獲取一個值,該值指示其他請求是否可以使用 System.Web.IHttpHandler 實例。
System.Web.HttpContext 對象,它提供對用于為 HTTP 請求提供服務的內部服務器對象(如 Request、Response、Session 和 Server)的引用。