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

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:18:13
字體:
來源:轉載
供稿:網友

下面是類的定義。

復制代碼 代碼如下:


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('http://m.survivalescaperooms.com/');
             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事件。類似事件羅列如下

BeginRequest在 ASP.NET 響應請求時作為 HTTP 執行管線鏈中的第一個事件發生。

AuthenticateRequest當安全模塊已建立用戶標識時發生。

AuthorizeRequest當安全模塊已驗證用戶授權時發生。

ResolveRequestCache

在 ASP.NET 完成授權事件以使緩存模塊從緩存中為請求提供服務后發生,

從而繞過事件處理程序(例如某個頁或 XML Web services)的執行。

AcquireRequestState當 ASP.NET 獲取與當前請求關聯的當前狀態(如會話狀態)時發生。

PreRequestHandlerExecute恰好在 ASP.NET 開始執行事件處理程序(例如,某頁或某個 XML Web services)前發生。

PostRequestHandlerExecute在 ASP.NET 事件處理程序(例如,某頁或某個 XML Web service)執行完畢時發生。

ReleaseRequestState在 ASP.NET 執行完所有請求事件處理程序后發生。 該事件將使狀態模塊保存當前狀態數據。

UpdateRequestCache當 ASP.NET 執行完事件處理程序以使緩存模塊存儲將用于從緩存為后續請求提供服務的響應時發生。

EndRequest在 ASP.NET 響應請求時作為 HTTP 執行管線鏈中的最后一個事件發生。


獲取要跳轉的url可以用request的CurrentExecutionFilePath屬性,而獲取請求文件的后綴可以用CurrentExecutionFilePathExtension,至于要按什么規則來判斷,按需求而定。我這里是在請求時判斷Session是否存在,不存在則跳轉回登陸頁面。由于要用到Session,打開頁面的時候會拋出異常,異常信息是“會話狀態在此上下文中不可用。”,在實現了IRequiresSessionState接口之后就沒有異常拋出了。

此外,還需要在配置文件Web.config的 <system.web>節點下添加如下代碼

復制代碼 代碼如下:


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


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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额尔古纳市| 株洲县| 林西县| 舞阳县| 密山市| 华容县| 旬邑县| 永年县| 阜平县| 新龙县| 凉山| 高雄县| 科技| 谢通门县| 景宁| 宜宾县| 泸州市| 略阳县| 沂水县| 东乌珠穆沁旗| 南澳县| 平湖市| 米林县| 祁阳县| 庆城县| 固始县| 武乡县| 临安市| 塔城市| 舞阳县| 海南省| 乌兰察布市| 宜黄县| 渑池县| 左权县| 阳高县| 曲水县| 新乡市| 长海县| 宣威市| 江山市|