本主题中描述的自定义 HTTP 模块阐释了 HTTP 模块的基本功能。在响应下面两个事件时调用该模块:BeginRequest 事件和 EndRequest 事件。这使该模块可以在处理页请求之前和之后运行。在这种情况下,该模块向请求的 ASP.NET 网页的任一 HTTP 请求开头处添加一条消息,并在处理请求后添加另一条消息。

注意

BeginRequest 和 EndRequest 事件只是在处理页期间发生的两个事件。有关在处理页期间引发的事件的更多信息,请参见 ASP.NET 网页中的服务器事件处理

每个事件处理程序都编写为模块的私有方法。在引发已注册事件时,ASP.NET 调用该模块中适当的处理程序方法,该方法将信息写入 ASP.NET 网页中。

创建自定义 HTTP 模块类

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

  2. 在 App_Code 目录中,创建一个名为 HelloWorldModule.vb(对于 Visual Basic)或名为 HelloWorldModule.cs(对于 C#)的类文件。

注意

或者,可以将 HelloWorldModule 类编译到一个库中,并将得到的 .dll 文件放在 Web 应用程序的 Bin 目录中。

  1. 将以下代码添加到该类文件中:

    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)
    {
    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>
      1. 这段代码用 HelloWorldModule 的类名和模块名注册该模块。

      测试自定义 HTTP 模块

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

      测试自定义 HTTP 模块

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

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

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

最新文章

  1. 网页实时聊天之js和jQuery实现ajax长轮询
  2. LUA表克隆方法归纳
  3. spark配置
  4. Scala深入浅出实战经典之 List的foldLeft、foldRight、sort操作代码实战
  5. hdu4648Magic Pen 6
  6. iOS开发——JS网页交互——javaScript
  7. Codevs 1010 过河卒 2002年NOIP全国联赛普及组
  8. oracle_数据库访问问题
  9. git笔记--git@OSC
  10. check the manual that corresponds to your MySQL server version for the right syntax处理方案
  11. 冲刺NO.9
  12. 分布式缓存技术之Redis_04Redis的应用实战
  13. 计算机爱好者协会技术贴markdown第一期
  14. 初始Vue
  15. 从0到有,虚拟机安装centos,然后ssh连接虚拟机
  16. MFC连接MySQL C API方法
  17. 图片按日期分类和查看程序(WPF开发)(附源码)
  18. 【洛谷】【单调栈】P4333 [COI2007] Patrik
  19. APICloud-端JS库功能API文档(1)
  20. BZOJ3246 IOI2013Dreaming

热门文章

  1. 两种应该掌握的排序方法--------1.shell Sort
  2. OpenLayers 项目完整分析——(二)源代码总体结构分析
  3. LinkedHashMap的实现原理
  4. C# 深复制
  5. linux c遍历文件夹 和文件查找的方法
  6. 2015年10月15日学习html基础笔记
  7. BP神经网络模型及算法推导
  8. vijosP1371 方程的解
  9. Docker系列(二)组件介绍
  10. oracle命令行操作