旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

ASP.NET过滤器的运用要领引见【C#.Net教程】,.NET 过滤器 应用

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:36评论:0


导读:在J2EEWeb开辟中有过滤器filter,该filter能够对指定的URL接见举行阻拦,并实行过滤器的要领,依据现实运用状况,在过滤器中修正要求的代码、推断会话信息,也能够做权...
在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的直接放过即可

更多ASP.NET过滤器的运用要领引见相干文章请关注ki4网!

标签:.NET 过滤器 应用


欢迎 发表评论: