來源: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 頁。