<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET過濾器的應用方法介紹

        來源:懂視網 責編:小采 時間:2020-11-27 22:40:58
        文檔

        ASP.NET過濾器的應用方法介紹

        ASP.NET過濾器的應用方法介紹:在J2EE Web開發中有過濾器filter,該filter可以對指定的URL訪問進行攔截,并執行過濾器的方法,根據實際應用情況,在過濾器中修改請求的代碼、判斷會話信息,也可以做權限控制,總之這個過濾器是非常有意義的,也可以說是責任鏈設計模式在J2EE中的一個應
        推薦度:
        導讀ASP.NET過濾器的應用方法介紹:在J2EE Web開發中有過濾器filter,該filter可以對指定的URL訪問進行攔截,并執行過濾器的方法,根據實際應用情況,在過濾器中修改請求的代碼、判斷會話信息,也可以做權限控制,總之這個過濾器是非常有意義的,也可以說是責任鏈設計模式在J2EE中的一個應

        在J2EE Web開發中有過濾器filter,該filter可以對指定的URL訪問進行攔截,并執行過濾器的方法,根據實際應用情況,在過濾器中修改請求的代碼、判斷會話信息,也可以做權限控制,總之這個過濾器是非常有意義的,也可以說是責任鏈設計模式在J2EE中的一個應用。

          那么在ASP.NET中是否也可以定義這樣的過濾器結構,并在過濾器中進行相應的邏輯操作呢?答案是肯定,本文將告訴你如果編寫一個過濾器,又如何配置到IIS的Web應用之中。

        過程一:如何編寫過濾器

          編寫過濾器,其實就是編寫一個過濾器的類,也就是編寫一個HttpModule模塊,這個過濾器應該實現IHttpModule基類,并重寫Init方法,給你一個實際的例子如下:

        這是一個PageFilter.cs
        代碼如下:
        using System;
        using System.Web;
        using System.Web.SessionState;
        using System.Collections.Generic;
        using System.Collections;
        using System.Text;
        using System.IO;

        public class PageFilter: IHttpModule
        {
                public String ModuleName
                {
                    get { return "PageFilter"; }
                }

                //在 Init 方法中注冊HttpApplication
                // 通過委托方式注冊事件
                public void Init(HttpApplication application)
                {
                    application.AcquireRequestState += new EventHandler(Application_AcquireRequestState);           
                }

          private void Application_AcquireRequestState(Object source, EventArgs e)

                {

                    HttpApplication application = (HttpApplication)source;
                    HttpContext context = application.Context;
                    HttpSessionState session = context.Session;
                    HttpRequest request = context.Request;
                    HttpResponse response = context.Response;
                    String contextPath = request.ApplicationPath;
                }
        }

          需要說明的是,“過濾器”也可以稱為是“攔截器”,即攔截整個HTTP請求/響應的過程,因為整個請求/響應過程可以分為許多個階段,那么這里面就會涉及到一個問題,也就是你的過濾器想攔截具體的哪一個階段,上面的Init函數中,可以自己定義想攔截的具體階段,例如上面攔截是產生請求會話的階段,AcquireRequestStat是這個狀態的代表,而攔截后對應的處理函數為Application_AcquireRequestState,所以下面定義了一個Application_AcquireRequestState方法,在該方法中可以通過強制類型轉換獲得application、context、session、request、response等一系列對象,在獲得這些對象的基礎上,你就可以進行核心業務邏輯的編寫了,例如獲得判斷當前URL訪問是否合法,檢查當前訪問是否為登錄后用戶的訪問等等。

          另外既然有攔截的整個過程有許多階段,那么如何攔截其它的階段呢?這個應該很簡單了,與上面類似在Init中按如下邏輯定義即可:

        application.階段的標準名稱1 += new EventHandler(該階段對應的處理方法名稱1);
        application.階段的標準名稱2 += new EventHandler(該階段對應的處理方法名稱2);
        。。

        階段的標準名稱,是說這些階段是有標準的名稱的,而且是application對象的標準屬性,例如上面AcquireRequestState,還有諸如BeginRequest、AuthenticateRequest、AuthorizeRequest、ResolveRequestCache、AcquireRequestState、PreRequestHandlerExecute、PostRequestHandlerExecute、ReleaseRequestState、UpdateRequestCache、EndRequest許多階段等等,這些階段都有特定的含義.

          該階段對應的處理方法名稱,其實就是你自己定義對應這個階段處理的方法,上面已有樣例,不再多解釋。

          還有一點需要特別注意,有那么多階段可以攔截,但是實際應用中,我們攔截的往往也就一兩個階段,而且要注意有些服務器對象只有在特定的階段才可以攔截到,例如Session對象在BeginRequest階段中是沒有的,在AcquireRequestState及其以后階段中是有的,因此要根據實際需求來攔截具體的階段,這個是新手最容易遇到的問題。

        過程二:如何配置過濾

          我們編寫好了一個.cs文件的過濾器,那么如何讓這個過濾器起作用呢,這個需要進行配置,默認肯定是不會攔截的,你需要將該過濾器配置到應用的Web.config文件之中,上述樣例的配置如下:
        代碼如下:
        <configuration>
        <system.web>
         <httpModules>
           <add name="pageModule" type="PageFilter"/>
         </httpModules>
        </system.web>
        </configuration>

          這樣其實就配置好了,然后發布網站生成dll等就可以了,到時后會自動攔截URL訪問的,不過要記住一點,默認情況下對于該應用的所有請求都會被攔截,如果你指向攔截特定的請求,例如想只對aspx文件的請求進行攔截,那么可以在過濾器邏輯中加入對文件后綴名的判斷,如果不是aspx的直接放過即可

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET過濾器的應用方法介紹

        ASP.NET過濾器的應用方法介紹:在J2EE Web開發中有過濾器filter,該filter可以對指定的URL訪問進行攔截,并執行過濾器的方法,根據實際應用情況,在過濾器中修改請求的代碼、判斷會話信息,也可以做權限控制,總之這個過濾器是非常有意義的,也可以說是責任鏈設計模式在J2EE中的一個應
        推薦度:
        標簽: 方法 使用 介紹
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲桃色AV无码| 免费国产高清视频| 亚洲精品乱码久久久久久按摩| 99爱在线精品视频免费观看9| 亚洲人AV永久一区二区三区久久| 亚洲国产精品无码久久一线| 91av免费在线视频| 国产av无码专区亚洲国产精品 | 免费国产成人午夜电影| 亚洲大码熟女在线观看| 国产免费人视频在线观看免费| 国产亚洲成AV人片在线观黄桃| 国产精品午夜免费观看网站| 77777亚洲午夜久久多人| 人妻免费一区二区三区最新| 久久久综合亚洲色一区二区三区| 67194成手机免费观看| 亚洲视频在线观看2018| 免费鲁丝片一级在线观看| 国产亚洲精品美女久久久久| 国产精品亚洲视频| 久久久久久AV无码免费网站 | 久久久久亚洲Av片无码v| 国产成人精品免费视频大全麻豆 | 一个人免费观看在线视频www| 亚洲欧洲日韩极速播放| 国产一级淫片视频免费看| 51午夜精品免费视频| 亚洲日韩乱码久久久久久| 免费高清av一区二区三区| 免费福利在线观看| 亚洲一卡2卡三卡4卡有限公司| 国产精品视频免费观看| 日本亚洲高清乱码中文在线观看| 亚洲综合国产一区二区三区| 5555在线播放免费播放| 美女扒开尿口给男人爽免费视频| 亚洲国产一区国产亚洲| 日本免费一区二区三区最新 | 自拍偷自拍亚洲精品播放| 亚洲国产一二三精品无码|