在本文中被描述的自定义 HTTP 模块说明了一个 HTTP 模块的基本功能。该模块被调用来回应两个事件:BeginRequest 事件和 EndRequest 事件。这允许模块在页面请求被处理之前和处理之后能够被运行。在这种情况下,该模块把一条消息添加到了任何 HTTP 请求的已请求 ASP.NET Web 页面之前,并且把其他消息添加到请求被处理之后。

提示:BeginRequest 和 EndRequest 事件是唯一出现在页面处理期间的两个事件。关于处理页面时被引发的事件的更多信息,请参考[ASP.NET Web 页面中的服务器事件处理]。

每个处理器都被编写成该模块的私有方法。当已注册事件被引发的时候,ASP.NET 就在处理器中调用适当的处理器方法,从而把信息写入到 ASP.NET Web 页面。

创建自定义 HTTP 模块类

  1. 如果你的 Web 站点没有 App_Code 目录,就在站点的根目录下创建一个。
  2. 在 App_Code 目录中创建一个名为 HelloWorldModule.vb(Visual Basic)或者 HelloWorldModule.cs(C#)的类文件。

提示:作为选择,你可以把 HelloWorldModule 类编译进一个库并且把结果 .dll 文件存放进 Web 应用程序的 Bin 目录。

  1. 添加下列代码到你的类文件:
    Code

注册 HTTP 模块

当你完成 HelloWorldModule 类的创建之后,你就可以在 Web.config 文件中创建一个入口来注册该模块。

在 Web.config 文件中注册模块
  1. 如果你的 Web 站点没有 Web.config 文件,就在站点的根目录下创建一个。
  2. 添加下列代码到 Web.config 文件:
    Code

    上述代码会使用 HelloWorldModule 的类名称和模块名称来注册模块。

测试自定义 HTTP 模块

在你创建并且注册自定义 HTTP 模块之后就可以测试了。

测试自定义 HTTP 模块
  1. 在你的应用程序中创建一个 Default.aspx 文件。
  2. 在浏览器中请求该 Default.aspx 页面。

    HTTP 模块把一个字符串添加到了回应的开始与结束部分。该模块将会在任何对于扩展名被指派到 ASP.NET 的文件请求之上得到运行。关于更多信息,请参考[介绍 HTTP 模块]。

posted on 2009-01-08 00:49  happyriver  阅读(485)  评论(0)    收藏  举报