建立自定義 HTTP 模塊

本主題中描述的自定義 HTTP 模塊闡釋了 HTTP 模塊的基本功能。在響應下面兩個事件時調用該模塊:BeginRequest 事件和 EndRequest 事件。這使該模塊能夠在處理頁請求以前和以後運行。在這種狀況下,該模塊向請求的 ASP.NET 網頁的任一 HTTP 請求開頭處添加一條消息,並在處理請求後添加另外一條消息。web

Note注意

BeginRequest  EndRequest 事件只是在處理頁期間發生的兩個事件。有關在處理頁期間引起的事件的更多信息,請參見 ASP.NET 網頁中的服務器事件處理瀏覽器

每一個事件處理程序都編寫爲模塊的私有方法。在引起已註冊事件時,ASP.NET 調用該模塊中適當的處理程序方法,該方法將信息寫入 ASP.NET 網頁中。服務器

建立自定義 HTTP 模塊類

  1. 若是網站尚未 App_Code 文件夾,請在該站點的根目錄下建立這樣的一個文件夾。app

  2. 在 App_Code 目錄中,建立一個名爲 HelloWorldModule.vb(對於 Visual Basic)或名爲 HelloWorldModule.cs(對於 C#)的類文件。測試

Note注意

或者,能夠將 HelloWorldModule 類編譯到一個庫中,並將獲得的 .dll 文件放在 Web 應用程序的 Bin 目錄中。網站

  1. 將如下代碼添加到該類文件中: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()
        {
        }
    }

    註冊 HTTP 模塊

    在建立完 HelloWorldModule 類後,能夠經過在 Web.config 文件中建立一項來註冊該模塊。url

    在 Web.config 文件中註冊該模塊

    1. 若是網站尚未 Web.config 文件,請在該站點的根目錄下建立一個這樣的文件。spa

    2. 將下面突出顯示的代碼添加到該 Web.config 文件中:code

      <configuration>
          <system.web>
              <httpModules>           <add name="HelloWorldModule" type="HelloWorldModule"/>        </httpModules>
          </system.web>
      </configuration>
      1. 這段代碼用 HelloWorldModule 的類名和模塊名註冊該模塊。

      測試自定義 HTTP 模塊

      建立並註冊完自定義 HTTP 模塊後,能夠對它進行測試。

      測試自定義 HTTP 模塊

      1. 在應用程序中建立一個 Default.aspx 頁。

      2. 在瀏覽器中請求該 Default.aspx 頁。

        HTTP 模塊會將一個字符串追加到響應的開頭和結尾。在請求擴展名指定爲 ASP.NET 類型的文件時,該模塊將會自動運行。

相關文章
相關標籤/搜索