• 如何:创建自定义 HTTP 模块


      来源:MSDN

    如何:创建自定义 HTTP 模块

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

    注意

    BeginRequestEndRequest事件只是在处理页期间发生的两个事件。有关在处理页期间引发的事件的更多信息,请参见 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.        将以下代码添加到该类文件中:

    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)

        {

            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>

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

    测试自定义 HTTP 模块

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

    测试自定义 HTTP 模块

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

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

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

     

  • 相关阅读:
    django quick start
    LiveWriter插入高亮代码插件介绍 基于SyntaxHighighter
    自动填充脚本使用及注意事项
    连接池错误
    Python3.3官方教程中文翻译1:开胃菜
    [译]科学计算可视化在andriod与ios实现的工具
    EXTGWT、GWT与EXTJS之间的关系
    Python3.3官方教程中文翻译2:使用Python解释器
    SAS9.1.3安装过程中反复出现重启动挂起的解决方案
    Sqlite 插入数据异常(乱码),看看是不是数据类型的错误
  • 原文地址:https://www.cnblogs.com/SummerRain/p/1050705.html
Copyright © 2020-2023  润新知