国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET-自定義HttpModule與HttpHandler

2019-11-17 01:33:03
字體:
來源:轉載
供稿:網友

asp.net-自定義HttpModule與HttpHandler

在之前的ASP.NET是如何在IIS下工作的這篇文章中介紹了ASP.NET與IIS配合工作的機制,在http請求經過一系列處理后,最后到達ASP.NET管道中,這時,就是Http Modules和HttpHandler出場的時候了。

  再來擺出管道工作時序圖來一看:

管道

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("UpdateRequestCache");            //HttpContext.Current.Response.Write("UpdateRequestCache<br />");        }        void context_ResolveRequestCache(object sender, EventArgs e)        {            WriteLog("ResolveRequestCache");            // HttpContext.Current.Response.Write("ResolveRequestCache<br />");        }        void context_RequestCompleted(object sender, EventArgs e)        {            WriteLog("RequestCompleted");            // HttpContext.Current.Response.Write("RequestCompleted<br />");        }        void context_ReleaseRequestState(object sender, EventArgs e)        {            WriteLog("ReleaseRequestState");            //HttpContext.Current.Response.Write("ReleaseRequestState<br />");        }        void context_PostUpdateRequestCache(object sender, EventArgs e)        {            WriteLog("PostUpdateRequestCache");            //HttpContext.Current.Response.Write("PostUpdateRequestCache<br />");        }        void context_PostResolveRequestCache(object sender, EventArgs e)        {            WriteLog("PostResolveRequestCache");            //HttpContext.Current.Response.Write("PostResolveRequestCache<br />");        }        void context_PostRequestHandlerExecute(object sender, EventArgs e)        {            WriteLog("PostRequestHandlerExecute");            //HttpContext.Current.Response.Write("PostRequestHandlerExecute<br />");        }        void context_PostReleaseRequestState(object sender, EventArgs e)        {            WriteLog("PostReleaseRequestState");            //HttpContext.Current.Response.Write("PostReleaseRequestState<br />");        }        void context_PostLogRequest(object sender, EventArgs e)        {            WriteLog("PostLogRequest");            //HttpContext.Current.Response.Write("PostLogRequest<br />");        }        void context_PostAuthorizeRequest(object sender, EventArgs e)        {            WriteLog("PostAuthorizeRequest");            //HttpContext.Current.Response.Write("PostAuthorizeRequest<br />");        }        void context_PostAuthenticateRequest(object sender, EventArgs e)        {            WriteLog("PostAuthenticateRequest");            //HttpContext.Current.Response.Write("PostAuthenticateRequest<br />");        }        void context_PostAcquireRequestState(object sender, EventArgs e)        {            WriteLog("PostAcquireRequestState");            //HttpContext.Current.Response.Write("PostAcquireRequestState<br />");        }        void context_MapRequestHandler(object sender, EventArgs e)        {            WriteLog("MapRequestHandler");            //HttpContext.Current.Response.Write("MapRequestHandler<br />");        }        void context_Disposed(object sender, EventArgs e)        {            WriteLog("Disposed");            //HttpContext.Current.Response.Write("Disposed<br />");        }        void context_AuthorizeRequest(object sender, EventArgs e)        {            WriteLog("AuthorizeRequest");            //HttpContext.Current.Response.Write("AuthorizeRequest<br />");        }        void context_AcquireRequestState(object sender, EventArgs e)        {            WriteLog("AcquireRequestState");            //HttpContext.Current.Response.Write("AcquireRequestState<br />");        }        void context_PreSendRequestHeaders(object sender, EventArgs e)        {            WriteLog("PreSendRequestHeaders");            //HttpContext.Current.Response.Write("PreSendRequestHeaders<br />");        }        void context_PreSendRequestContent(object sender, EventArgs e)        {            WriteLog("PreSendRequestContent");            //HttpContext.Current.Response.Write("PreSendRequestContent<br />");        }        void context_PreRequestHandlerExecute(object sender, EventArgs e)        {            WriteLog("PreRequestHandlerExecute");            //HttpContext.Current.Response.Write("PreRequestHandlerExecute<br />");        }        void context_EndRequest(object sender, EventArgs e)        {            WriteLog("EndRequest");            //HttpContext.Current.Response.Write("EndRequest<br />");        }        void context_BeginRequest(object sender, EventArgs e)        {            Wr
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长兴县| 安仁县| 罗源县| 盖州市| 蚌埠市| 建德市| 武川县| 石柱| 玉山县| 麦盖提县| 龙岩市| 佛山市| 铜梁县| 汾阳市| 河津市| 囊谦县| 革吉县| 兴文县| 枝江市| 砀山县| 安平县| 罗江县| 洪泽县| 永平县| 五寨县| 郎溪县| 攀枝花市| 曲阳县| 兰西县| 筠连县| 湘阴县| 万盛区| 四川省| 云浮市| 南昌市| 教育| 措美县| 谢通门县| 普洱| 天水市| 保德县|