ASP.NET中的URL過濾實現代碼

來源:互聯網
上載者:User
下面是類的定義。

using System; using System.Web; using System.Web.SessionState; namespace QTJZ {     public class Filters : IHttpModule, IRequiresSessionState     {         public void Dispose() { }         public void Init(HttpApplication application)         {             application.AcquireRequestState += new EventHandler(application_AcquireRequestState);         }         public void application_AcquireRequestState(object sender, EventArgs e)         {             HttpApplication application = sender as HttpApplication;             HttpRequest request = application.Request;             HttpResponse response = application.Response;             string url=request.CurrentExecutionFilePath.Trim('/');             string suffix = request.CurrentExecutionFilePathExtension.Trim('.');             if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm"))             {                 object sessionObj = application.Context.Session == null ? null : application.Session["useID"];                 if (sessionObj==null)                 {                     response.Redirect("~/Default.htm");                 }             }         }     } }

為了實現過濾的效果,Filters類需要實現IHttpMoeld介面,實現該介面需要有兩個方法,一個是Dispose,另一個是Init。Init的參數是一個HttpApplication類型的執行個體,利用這個執行個體註冊一些事件。由於現在要對URL進行過濾,因此註冊的是AcquireRequestState事件。類似事件羅列如下

擷取要跳轉的url可以用request的CurrentExecutionFilePath屬性,而擷取請求檔案的尾碼可以用CurrentExecutionFilePathExtension,至於要按什麼規則來判斷,按需求而定。我這裡是在請求時判斷Session是否存在,不存在則跳回登陸頁面。由於要用到Session,開啟頁面的時候會拋出異常,異常資訊是“工作階段狀態在此上下文中不可用。”,在實現了IRequiresSessionState介面之後就沒有異常拋出了。

此外,還需要在設定檔Web.config的 <system.web>節點下添加如下代碼

<httpModules> <add name="filters" type="QTJZ.Filters"/> </httpModules>

其中type屬性則是上面Filters類的完全限定名

更多ASP.NET中的URL過濾實現代碼相關文章請關注topic.alibabacloud.com!
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.