HTTP Module的实现

有两种方法,本质是一样的。一种是写代码,把实现IHttpModule接口的类放在App_Code文件夹中。还有一种方法是直接把该类放到一个项目中,编译后得到的dll放入Bin文件夹。

具体步骤如下:

http://support.microsoft.com/kb/307996 参考

实现 IHttpModule 接口。您的类定义应如下所示:

public class HelloWorldModule: IHttpModule

  • 决定要预订哪些事件。下表概括了可从 HttpApplication 对象预订的事件:
    • AcquireRequestState:调用此事件可允许模块获取或创建请求的状态(例如,会话)。
    • AuthenticateRequest:当安全模块在处理请求前需要对用户进行身份验证时,调用此事件。
    • AuthorizeRequest:当请求需要经过授权时,安全模块就会调用此事件。此事件是在身份验证后调用的。
    • BeginRequest:调用此事件以通知模块新请求即将开始。
    • Disposed:调用此事件以通知模块由于某种原因应用程序即将终止。允许模块进行内部清理。
    • EndRequest:调用此事件以通知模块该请求即将结束。
    • Error:调用此事件以通知模块在请求处理过程中发生了错误。
    • PostRequestHandlerExecute:调用此事件以通知模块处理程序已完成对请求的处理。
    • PreRequestHandlerExecute:调用此事件以通知模块将调用用于处理请求的处理程序。
    • PreSendRequestContent:调用此事件以通知模块将向客户端发送请求内容。
    • PreSendRequestHeaders:调用此事件以通知模块将向客户端发送 HTTP 头。
    • ReleaseRequestState:调用此事件以允许模块在处理程序完成对请求的处理后释放状态。
    • ResolveRequestCache:在身份验证后调用此事件。缓存模块使用此事件确定该请求是否应该由其缓存处理,或者处理程序是否应该处理该请求。
    • UpdateRequestCache:在处理程序响应后调用此事件。缓存模块应根据该响应来更新其缓存。
    本示例使用了 BeginRequest 事件。
  • 按以下方式实现 IHttpModule 接口的 InitDispose 方法:

    public void Init(HttpApplication application)
       {
           application.BeginRequest +=
               (new EventHandler(this.Application_BeginRequest));
           application.EndRequest +=
               (new EventHandler(this.Application_EndRequest));
       }

    public void Dispose(){ }

  • 定义这两个事件方法:

    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>");
        }

    配置web.config文件

    <configuration>

    <system.web>

    <httpModules>

    <add name="HelloWorldModule" type="HelloWorldModule"/> 如果用的是引用项目的话,<add name="HelloWorldModule" type="HelloWorldModule.HelloWorldModule,HelloWorldModule"/>

    </httpModules>

    </system.web>

    </configuration>

    然后在执行页面的时候,都会执行这2个注册的事件。

    你可能感兴趣的:(文件夹,title,休闲,blank,具体步骤)