ASP.NET MVC自定义Module记录管道事件执行顺序
1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC。
2. 在项目中新建一个类MyModule,实现IHttpModule接口
namespace SimpleApp.Infrastructure
{
/// <summary>
/// 记录请求管道事件执行顺序
/// </summary>
public class MyModule : IHttpModule
{
public void Dispose()
{
} public void Init(HttpApplication context)
{
//下面是记录事件的执行
//提供自定义日志记录实现的示例
context.BeginRequest += (src, args) => RecordEvent(context); context.AuthenticateRequest += (src, args) => RecordEvent(context);
context.PostAuthenticateRequest += (src, args) => RecordEvent(context); context.AuthorizeRequest += (src, args) => RecordEvent(context);
context.PostAuthorizeRequest += (src, args) => RecordEvent(context); context.ResolveRequestCache += (src, args) => RecordEvent(context);
context.PostResolveRequestCache += (src, args) => RecordEvent(context); //MapRequestHandler:仅支持IIS7以上,Net Framwork3.0以上的集成模式
context.MapRequestHandler += (src, args) => RecordEvent(context);
context.PostMapRequestHandler += (src, args) => RecordEvent(context); context.AcquireRequestState += (src, args) => RecordEvent(context);
context.PostAcquireRequestState += (src, args) => RecordEvent(context); context.PreRequestHandlerExecute += (src, args) => RecordEvent(context);
context.PostRequestHandlerExecute += (src, args) => RecordEvent(context); context.ReleaseRequestState += (src, args) => RecordEvent(context);
context.PostReleaseRequestState += (src, args) => RecordEvent(context); context.UpdateRequestCache += (src, args) => RecordEvent(context);
context.PostUpdateRequestCache += (src, args) => RecordEvent(context); //LogRequest、PostLogRequest支持IIS7以上,Net Framwork3.0以上的集成模式
context.LogRequest += (src, args) => RecordEvent(context);
context.PostLogRequest += (src, args) => RecordEvent(context); context.EndRequest += (src, args) => RecordEvent(context); context.PreSendRequestHeaders += (src, args) => RecordEvent(context);
context.PreSendRequestContent += (src, args) => RecordEvent(context); context.Error += (src, args) => RecordEvent(context);
context.RequestCompleted += (src, args) => RecordEvent(context); context.Disposed += (src, args) => RecordEvent(context);
} private static int index = ;
private void RecordEvent(HttpApplication context)
{
index++;
string eventName = HttpContext.Current.CurrentNotification.ToString();
if (eventName== "BeginRequest")
{
index = ;
}
if (HttpContext.Current.IsPostNotification)
{
eventName = "Post" + eventName;
}
using (StreamWriter sw = new StreamWriter(@"d:\asplog.txt",true,Encoding.UTF8))
{
sw.WriteLine("=====================================");
sw.WriteLine(index+": "+eventName);
sw.WriteLine("=====================================");
sw.Flush();
}
}
} }
3. 在App_Start文件夹中,定义类ModuleRegistration,注册MyModule
using System.Web; [assembly: PreApplicationStartMethod(typeof(SimpleApp.ModuleRegistration), "RegisterModule")]
namespace SimpleApp
{
public class ModuleRegistration
{
public static void RegisterModule()
{
HttpApplication.RegisterModule(typeof(SimpleApp.Infrastructure.MyModule));
}
}
}
4. 新建HomeController,并新建Index视图
5. ctrl+F5运行项目,然后关闭,在d盘可以看懂asplog.txt记录的请求管道中事件的执行顺序

ASP.NET MVC自定义Module记录管道事件执行顺序的更多相关文章
- Asp.net mvc 自定义全局的错误事件HandleErrorAttribute无效
Asp.net mvc 自定义全局的错误事件HandleErrorAttribute,结果无效, 原因: 1.没有在RegisterGlobalFilters 里面添加或者你要的位置添加. 2.你把这 ...
- Asp.Net MVC 的19个管道事件
httpApplication调用ProcessRequest方法,内部执行19个管道事件,如下 BeginRequest 开始处理请求 AuthenticateRequest 授权验证请求开始,获 ...
- asp.net mvc 自定义pager封装与优化
asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...
- ASP.NET MVC 自定义路由中几个需要注意的小细节
本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...
- Asp.net Mvc 自定义Session (二)
在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...
- ASP.NET MVC自定义验证Authorize Attribute(包含cookie helper)
前几天Insus.NET有在数据库实现过对某一字段进行加密码与解密<使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和 ...
- ASP.NET MVC 自定义Razor视图WorkContext
概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...
- asp.net MVC 自定义模型绑定 从客户端中检测到有潜在危险的 Request.QueryString 值
asp.net mvc 自定义模型绑定 有潜在的Requset.Form 自定义了一个模型绑定器.前端会传过来一些敏感字符.调用bindContext. valueProvider.GetValue( ...
- ASP.NET Page对象各事件执行顺序(转)
很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...
随机推荐
- Properties类按顺序输出加载内容
Properties类按顺序输出加载内容 最近手写工厂的时候,遇到了加载配置文件时不按照properties文件中的数据的顺序来加载. 一.问题代码 import java.io.IOExceptio ...
- 使用jmeter进行压力测试及如何添加负载机
Jmeter是一款简单灵活且强大的性能测试工具,同时也可以做接口测试. 由于初识jmeter,今天来记录一下如何对一个web进行一个简单的压力测试. 1.首先在测试计划里面添加一个线程组,然后再其下面 ...
- 不知道多大的文件不要用cat查看!
今天长清女子学校的主任给我微信上发了一图片,说登录服务器的时候就查看了一个文件,结果服务器的风扇忽然变的特别响,系统慢了好多,让我看看是什么回事!我当时心里想,无缘无故怎么会这样,难不成是进病毒了?查 ...
- Docker常用安装(九)
一.安装mysql 1. docker hub上面查找mysql镜像 2. 拉取镜像 #获取mysql镜像 docker pull mysql:5.6 3. 运行容器 docker run -p 1 ...
- svn版本库操作(四)
一.使用命令行模式访问 SVN 服务器 1. 检出(checkout) (1) 首先进入自己的工作目录,例如:D:\svnSpace cd D:\svnSpace (2) 运行 svn checkou ...
- 刘长峰 js基础讲座笔记 课后作业
1.DataType Assert 数据类型断言 一.typeof : 判断变量的类型 ,返回字符串 typeof a 返回 'undefined' .'boolean' .'string' .' ...
- 20191003 「HZOJ NOIP2019 Round #8」20191003模拟
综述 试题为常州集训2019SCDay2 得分\(100+30(0)+28\) 时之终结 问题描述 HZOJ1310 题解 构造题. 发现部分分有一档是 \(Y\) 是 \(2^x\) ,于是自然想到 ...
- 求职-DB相关职位常见face题
数据分析是个通用技能,适合各行各业,比如运营.产品.分析等职位都会要求会数据分析. 一.考察对数据分析岗位的理解与职业规划 数据分析师与数据工程师的区别在哪里? 为什么转行, 为什么没在公司内部转岗? ...
- 交换机端口与Mac地址绑定(基于Cisco模拟器)
实验设备: 二层交换机一台,主机三台 实验步骤: 1.进入相应的接口 (以端口1设置Mac地址绑定,PC0接1端口举例) Switch>enable Switch#config Configur ...
- 安装WIN7系统备忘录
安装WIN7系统备忘录因为安装WIN7设置项太多,制作RAMOS如果忘了某项设置,终归是不方便,记录如下:1.用WINNTSETUP安装到VHD中,安装时优化选项中建议勾选关闭休眠和虚拟内存功能(假设 ...