天天看點

如何:建立自定義 HTTP 子產品

  來源:MSDN

如何:建立自定義 HTTP 子產品

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

注意

每個事件處理程式都編寫為子產品的私有方法。在引發已注冊事件時,ASP.NET 調用該子產品中适當的處理程式方法,該方法将資訊寫入 ASP.NET 網頁中。

建立自定義 HTTP 子產品類

1.        如果網站還沒有 App_Code 檔案夾,請在該站點的根目錄下建立這樣的一個檔案夾。

2.        在 App_Code 目錄中,建立一個名為 HelloWorldModule.vb(對于 Visual Basic)或名為 HelloWorldModule.cs(對于 C#)的類檔案。

或者,可以将 HelloWorldModule類編譯到一個庫中,并将得到的 .dll 檔案放在 Web 應用程式的 Bin 目錄中。

1.        将以下代碼添加到該類檔案中:

C# 

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)

        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 檔案中建立一項來注冊該子產品。

在 Web.config 檔案中注冊該子產品

1.        如果網站還沒有 Web.config 檔案,請在該站點的根目錄下建立一個這樣的檔案。

2.        将下面突出顯示的代碼添加到該 Web.config 檔案中:

<configuration>

    <system.web>

        <httpModules>           <add name="HelloWorldModule" type="HelloWorldModule"/>        </httpModules>

    </system.web>

</configuration>

3.        這段代碼用 HelloWorldModule的類名和子產品名注冊該子產品。

測試自定義 HTTP 子產品

建立并注冊完自定義 HTTP 子產品後,可以對它進行測試。

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

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

繼續閱讀