PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ASP.NET教程 > 正文

    ASP.NET-自定义HttpModule与HttpHandler

    作者:w634381967来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:HttpModule是类似于过滤器的作用,可以没有,也可以有任意个,每一个都可以订阅管道事件中的任意个事件,在每个订阅的事件中可自定义功能实...
    HttpModule是类似于过滤器的作用,可以没有,也可以有任意个,每一个都可以订阅管道事件中的任意个事件,在每个订阅的事件中可自定义功能实现。
     
    HttpModule是实现IHttpModule接口的类。接口如下:
     
    public interface IHttpModule  
        {  
            // 摘要:   
            //     处置由实现 System.Web.IHttpModule 的模块使用的资源(内存除外)。  
            void Dispose();  
            //  
            // 摘要:   
            //     初始化模块,并使其为处理请求做好准备。  
            //  
            // 参数:   
            //  context:  
            //  一个 System.Web.HttpApplication,它提供对 ASP.NET 应用程序内所有应用程序对象的公用的方法、属性和事件的访问  
            void Init(HttpApplication context);  
        }  
    下面实现一个HttpModule,并订阅管道中的一系列事件,订阅事件就是在Init方法中绑定EventHandler的过程:
     
    代码有点长,因为我把每一个事件都订阅了,这样一来可以清楚的看出哪些事件执行了,这些事件执行的先后顺序是什么。代码如下:
     
    public class MyModule : IHttpModule  
        {  
            #region IHttpModule Members  
      
            public void Dispose()  
            {  
                //此处放置清除代码。  
            }  
      
            public void Init(HttpApplication context)  
            {  
                // 下面是如何处理 LogRequest 事件并为其   
                // 提供自定义日志记录实现的示例  
                context.LogRequest += new EventHandler(OnLogRequest);  
                context.BeginRequest += new EventHandler(context_BeginRequest);  
                context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);  
                context.AcquireRequestState += new EventHandler(context_AcquireRequestState);  
                context.AuthorizeRequest += new EventHandler(context_AuthorizeRequest);  
                context.Disposed += new EventHandler(context_Disposed);  
                context.Error += new EventHandler(context_Error);  
                context.EndRequest += new EventHandler(context_EndRequest);  
                context.MapRequestHandler += new EventHandler(context_MapRequestHandler);  
                context.PostAcquireRequestState += new EventHandler(context_PostAcquireRequestState);  
                context.PostAuthenticateRequest += new EventHandler(context_PostAuthenticateRequest);  
                context.PostAuthorizeRequest += new EventHandler(context_PostAuthorizeRequest);  
                context.PostLogRequest += new EventHandler(context_PostLogRequest);  
                context.PostReleaseRequestState += new EventHandler(context_PostReleaseRequestState);  
                context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);  
                context.PostResolveRequestCache += new EventHandler(context_PostResolveRequestCache);  
                context.PostUpdateRequestCache += new EventHandler(context_PostUpdateRequestCache);  
                context.ReleaseRequestState += new EventHandler(context_ReleaseRequestState);  
                context.RequestCompleted += new EventHandler(context_RequestCompleted);  
                context.ResolveRequestCache += new EventHandler(context_ResolveRequestCache);  
                context.UpdateRequestCache += new EventHandler(context_UpdateRequestCache);  
                context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);  
                context.PreSendRequestContent += new EventHandler(context_PreSendRequestContent);  
                context.PreSendRequestHeaders += new EventHandler(context_PreSendRequestHeaders);  
                context.PostMapRequestHandler += new EventHandler(context_PostMapRequestHandler);  
      
      
            }  
      
            void context_Error(object sender, EventArgs e)  
            {  
                WriteLog("Error");  
                //HttpContext.Current.Response.Write("Error<br />");  
            }  
      
            void context_UpdateRequestCache(object sender, EventArgs e)  
            {  
    WriteLog
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-11-747-1.html
    相关热词搜索: HttpModule HttpHandler