自定义 HTTP 模块

来源:互联网 发布:电脑超频软件 编辑:程序博客网 时间:2024/05/01 07:01

在响应下面两个事件时调用该模块:BeginRequest 事件和 EndRequest 事件。这使该模块可以在处理页请求之前和之后运行。在这种情况下,该模块向请求的 ASP.NET 网页的任一 HTTP 请求开头处添加一条消息,并在处理请求后添加另一条消息。

public class HelloWorldModule : IHttpModule{    public HelloWorldModule()    {    }    public String ModuleName    {        get { return "HelloWorldModule"; }    }    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)    {        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 文件中创建一项来注册该模块。

在 Web.config 文件中注册该模块

  1. 如果网站还没有 Web.config 文件,请在该站点的根目录下创建一个这样的文件。

  2. 将下面突出显示的代码添加到该 Web.config 文件中:

    <configuration>    <system.web>        <httpModules>           <add name="HelloWorldModule" type="HelloWorldModule"/>        </httpModules>    </system.web></configuration>

    这段代码用 HelloWorldModule 的类名和模块名注册该模块。

测试自定义 HTTP 模块

创建并注册完自定义 HTTP 模块后,可以对它进行测试。

测试自定义 HTTP 模块

  1. 在应用程序中创建一个 Default.aspx 页。

  2. 在浏览器中请求该 Default.aspx 页。

    HTTP 模块会将一个字符串追加到响应的开头和结尾。在请求扩展名指定为 ASP.NET 类型的文件时,该模块将会自动运行。


原创粉丝点击