来源: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 页。