我的女神h漫,奇迹男孩在线观看,mar魔法奇兵
在j2ee web开发中有过滤器filter,该filter可以对指定的url访问进行拦截,并执行过滤器的方法,根据实际应用情况,在过滤器中修改请求的代码、判断会话信息,也可以做权限控制,总之这个过滤器是非常有意义的,也可以说是责任链设计模式在j2ee中的一个应用。
那么在asp.net中是否也可以定义这样的过滤器结构,并在过滤器中进行相应的逻辑操作呢?答案是肯定,本文将告诉你如果编写一个过滤器,又如何配置到iis的web应用之中。
过程一:如何编写过滤器
编写过滤器,其实就是编写一个过滤器的类,也就是编写一个httpmodule模块,这个过滤器应该实现ihttpmodule基类,并重写init方法,给你一个实际的例子如下:
这是一个pagefilter.cs
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;
}
}
另外既然有拦截的整个过程有许多阶段,那么如何拦截其它的阶段呢?这个应该很简单了,与上面类似在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文件之中,上述样例的配置如下:
这样其实就配置好了,然后发布网站生成dll等就可以了,到时后会自动拦截url访问的,不过要记住一点,默认情况下对于该应用的所有请求都会被拦截,如果你指向拦截特定的请求,例如想只对aspx文件的请求进行拦截,那么可以在过滤器逻辑中加入对文件后缀名的判断,如果不是aspx的直接放过即可
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论