本主題中描述的自定義 HTTP 模塊闡釋了 HTTP 模塊的基本功能。在響應下面兩個事件時調用該模塊:BeginRequest 事件和 EndRequest 事件。這使該模塊能夠在處理頁請求以前和以後運行。在這種狀況下,該模塊向請求的 ASP.NET 網頁的任一 HTTP 請求開頭處添加一條消息,並在處理請求後添加另外一條消息。web
注意 |
---|
BeginRequest 和 EndRequest 事件只是在處理頁期間發生的兩個事件。有關在處理頁期間引起的事件的更多信息,請參見 ASP.NET 網頁中的服務器事件處理。瀏覽器 |
每一個事件處理程序都編寫爲模塊的私有方法。在引起已註冊事件時,ASP.NET 調用該模塊中適當的處理程序方法,該方法將信息寫入 ASP.NET 網頁中。服務器
若是網站尚未 App_Code 文件夾,請在該站點的根目錄下建立這樣的一個文件夾。app
在 App_Code 目錄中,建立一個名爲 HelloWorldModule.vb(對於 Visual Basic)或名爲 HelloWorldModule.cs(對於 C#)的類文件。測試
注意 |
---|
或者,能夠將 HelloWorldModule 類編譯到一個庫中,並將獲得的 .dll 文件放在 Web 應用程序的 Bin 目錄中。網站 |
將如下代碼添加到該類文件中:this
public class HelloWorldModule : IHttpModule { public HelloWorldModule() { } public String ModuleName { get { return "HelloWorldModule"; } } // In the Init function, register for HttpApplication // events by adding your handlers. public void Init(HttpApplication application) { application.BeginRequest += (new EventHandler(this.Application_BeginRequest)); application.EndRequest += (new EventHandler(this.Application_EndRequest)); } private void Application_BeginRequest(Object source, EventArgs e) { // Create HttpApplication and HttpContext objects to access // request and response properties. HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; context.Response.Write("<h1><font color=red> HelloWorldModule: Beginning of Request </font></h1><hr>"); } private void Application_EndRequest(Object source, EventArgs e) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; context.Response.Write("<hr><h1><font color=red> HelloWorldModule: End of Request</font></h1>"); } public void Dispose() { } }
在建立完 HelloWorldModule 類後,能夠經過在 Web.config 文件中建立一項來註冊該模塊。url
若是網站尚未 Web.config 文件,請在該站點的根目錄下建立一個這樣的文件。spa
將下面突出顯示的代碼添加到該 Web.config 文件中:code
<configuration> <system.web> <httpModules> <add name="HelloWorldModule" type="HelloWorldModule"/> </httpModules> </system.web> </configuration>
這段代碼用 HelloWorldModule 的類名和模塊名註冊該模塊。
建立並註冊完自定義 HTTP 模塊後,能夠對它進行測試。
在應用程序中建立一個 Default.aspx 頁。
在瀏覽器中請求該 Default.aspx 頁。
HTTP 模塊會將一個字符串追加到響應的開頭和結尾。在請求擴展名指定爲 ASP.NET 類型的文件時,該模塊將會自動運行。