.过滤器代码
public class PageFilter : IHttpModule
{
public String ModuleName
{
get { return "PageFilter"; }
} public void Dispose()
{ } //在 Init 方法中注册HttpApplication
// 通过委托方式注册事件
public void Init(HttpApplication application)
{ application.BeginRequest += Application_BeginRequest;
application.Error += Application_Error;
application.AcquireRequestState += new EventHandler(Application_AcquireRequestState);
application.EndRequest += Application_EndRequest;
} private void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpSessionState session = context.Session;
HttpRequest request = context.Request;
HttpResponse response = context.Response;
String contextPath = request.ApplicationPath;
var rawUrl = request.RawUrl;
if (rawUrl.Contains("/admin/Sys/SysDictTypeEdit.aspx") && rawUrl.Contains("_method=Save"))
{
System.Diagnostics.Debug.WriteLine("begin request");
} } private void Application_Error(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpSessionState session = context.Session;
HttpRequest request = context.Request;
HttpResponse response = context.Response;
String contextPath = request.ApplicationPath;
var rawUrl = request.RawUrl;
if (rawUrl.Contains("/admin/Sys/SysDictTypeEdit.aspx") && rawUrl.Contains("_method=Save"))
{
System.Diagnostics.Debug.WriteLine("error");
}
} private void Application_EndRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpSessionState session = context.Session;
HttpRequest request = context.Request;
HttpResponse response = context.Response;
String contextPath = request.ApplicationPath;
var rawUrl = request.RawUrl;
if (rawUrl.Contains("/admin/Sys/SysDictTypeEdit.aspx") && rawUrl.Contains("_method=Save"))
{
System.Diagnostics.Debug.WriteLine("end request");
}
} private void Application_AcquireRequestState(Object source, EventArgs e)
{
try
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
HttpSessionState session = context.Session;
HttpRequest request = context.Request;
HttpResponse response = context.Response;
String contextPath = request.ApplicationPath;
if (application.Context.Handler is System.Web.UI.TemplateControl)
{
var path = ((System.Web.UI.TemplateControl)application.Context.Handler).AppRelativeVirtualPath;
if (path == "~/admin/Sys/SysDictTypeEdit.aspx" && request["_method"] == "Save")
{
Action action = () => System.Diagnostics.Debug.WriteLine("Save777");
//注意可以在这里往上下文的IDcitionary里放委托,将来可用于回调(可理解为注册)
context.Items.Add(request["_method"], action);
}
}
}
catch (Exception ex)
{ throw;
}
}
}
.web.config配置
<system.web>
<httpModules>
<add name="pageModule" type="HraWeb.PageFilter,HraWeb"/>
</httpModules>
</system.web>
<system.webserver>
<modules>
<add name="pageModule" type="HraWeb.PageFilter,HraWeb"/>
</modules>
</system.webserver>

asp.net webform过滤器(注意我们可以在拦截请求的同时设置回调函数)的更多相关文章

  1. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...

  2. ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  3. ASP.NET MVC 过滤器(一)

    ASP.NET MVC 过滤器(一) 前言 前面的篇幅中,了解到了控制器的生成的过程以及在生成的过程中的各种注入点,按照常理来说篇幅应该到了讲解控制器内部的执行过程以及模型绑定.验证这些知识了.但是呢 ...

  4. ASP.NET MVC 过滤器(三)

    ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些AOP方面的知识(在顺序执行的过程中, ...

  5. ASP.NET MVC 过滤器(四)

    ASP.NET MVC 过滤器(四) 前言 前一篇对IActionFilter方法执行过滤器在框架中的执行过程做了大概的描述,本篇将会对IActionFilter类型的过滤器使用来做一些介绍. ASP ...

  6. ASP.NET MVC 过滤器(五)

    ASP.NET MVC 过滤器(五) 前言 上篇对了行为过滤器的使用做了讲解,如果在控制器行为的执行中遇到了异常怎么办呢?没关系,还好框架给我们提供了异常过滤器,在本篇中将会对异常过滤器的使用做一个大 ...

  7. asp.net mvc4 过滤器的简单应用:登录验证

    直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...

  8. 一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模拟

    ASP.NET WebForm 应用,用户请求的是物理文件,其中包括静态页面和动态页面,在Url中的显示都是服务器中一个物理文件的相对路径.但是ASP.NET MVC就不同了,用户请求的是Contro ...

  9. (转)教你记住ASP.NET WebForm页面的生命周期

    对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供 ...

随机推荐

  1. Excel信息提取之二

    Sub 订单归纳() Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet Dim dic1 As Object, dic2 As Obje ...

  2. SQL 只取重复记录一条记录并且是最小值

    and not exists( and a.StateValue>StateValue ) '

  3. 如何利用JConsole观察分析Java程序的运行并进行排错调优_java

    如何利用JConsole观察分析Java程序的运行并进行排错调优_java 官方指导  use jconsole use jmx technology

  4. centos开机提示CPU无法识别的问题

    centos版本和对应cpu兼容性,官方网址: https://access.redhat.com/support/policy/intel Red Hat Enterprise Linux Vers ...

  5. zookeeper的四种类型的节点

    znode创建类型(CreateMode),有以下四种: PERSISTENT 持久化节点 PERSISTENT_SEQUENTIAL 顺序自动编号持久化节点,这种节点会根据当前已存在的节点数自动加 ...

  6. Vim编辑器基本操作学习(二)

    操作符+位移 x命令可以删除一个字符,4x可以删除4个字符. dw可以删除一个word,w事实上是向后移动一个word的命令:dw可以接上一个任意一个位移命令,它将删除从当前光标开始到位移终点处的文本 ...

  7. mongodb一些语法

    一.DB shell数据操作 shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库   1.Help查看命令提示 help ...

  8. 【学习笔记】FFT

    1.内容 由于noble_太懒 不想写了 非常好的博客: https://www.cnblogs.com/rvalue/p/7351400.html http://www.cnblogs.com/ca ...

  9. python学习笔记(五):装饰器、生成器、内置函数、json

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...

  10. SVN专题(Visual SVN Server + TortoiseSVN + Visual SVN)

    参考资料: 1.Windows环境下搭建SVN服务器.原文地址:https://blog.csdn.net/lu1024188315/article/details/74082227 2.Git|SV ...