简要说明

最近半年一直在做一个项目,公司的前端MES系统.然后呢,最近又一直在考虑权限卡控的问题.于是就把之前看过的HTTP Module又重新研究了一番.记得很久之前就在一个同事面前,和其高谈阔论过HTTP模块的作用,至今仍历历在目.当时讨论的话题是如何做网站的统计分析,我说如果是ASP.NET的话,使用HTTP Module是一个很好的方式.因为HTTP模块可以重用呀.只要配置Web.config就可以啦,可以被多个网站重用,很适合公司目前的情况.然后还说了一番自己的见解,分析了一番ASP.NET应用程序的生命周期.最后结论是HTTP Module可以做,而且会比较方便的做.进一步拓展到如果不是ASP.NET的网站,那一样是可以做,只要重新配置一下IIS就可以啦.(嗯,注意哦这个讨论仅限于与Windows的IIS环境下哟).后来很长时间没有碰,那个网站统计分析的想法也没有去实践论证.发现自己啦~~~是个空想主义者 = =|| 好啦,总结一下HTTP Module,阶段性总结,梳理一下自己的知识.

HTTP模块概述

HTTP模块是一个在每次针对应用程序发出请求时调用的程序集.HTTP模块作为请求管道的一部分调用,它能够在整个请求过程中访问生命周期事件.因此,HTTP模块使您可以检查传入的请求并根据该请求进行操作.它们还使您可以检查传出的响应并修改它.所以HTTP模块通常具有以下用途:

安全

统计信息和日志记录

自定义的页眉或页脚

Url Rewrite

其实 ASP.NET使用模块来实现各个应用程序功能,其中包括Forms身份验证,缓存,会话状态和客户端脚本任务.

HTTP模块工作方式

模块必须经过注册才能从请求管道接收通知.注册HTTP模块的最常用发发就是在应用程序的web.config中进行注册.IIS 7.0有另外的注册方式.模块经过注册之后就可以在应用程序中工作.具体工作方式如下描述:

1、ASP.NET创建表示应用程序的HttpApplication类的实例时,将创建已注册的任何模块实例。

2、在创建模块实例时,将调用模块的Init方法并自行初始化。

3、在Init方法中,订阅需要的各种应用程序事件

4、当应用程序事件被引发时,将调用模块中的相应方法。

5、当模块的事件处理程序完成运行时,ASP会调用管道中的下一进程。这个可能是另一个模块,也可能是用于该请求的HTTP处理程序

HTTP模块与Global.asax文件

Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块所引发的应用程序级别和会话级别事件的代码。

  HTTP模块 Global文件
优点 模块可以封装,因此可以在创建一个次后在许多不同的应用程序中使用,通过将它们添加到全局程序集缓存并将它们注册到Machineconfig文件中,可以跨应用程序重新使用它们. 在于可以处理其他已注册事件,如Session_Start和Session_End,此外Global文件还允许实例化可在整个应用程序中使用的全局对象.
使用条件

希望在其他应用程序中重用该模块。

希望避免将复杂代码放在 Global.asax 文件中。

该模块应用于管道中的所有请求(仅限 IIS 7.0 集成模式)。

当必须订阅对于模块不可用的事件(如 Session_Start)时
创建依赖应用程序事件的代码并且不需要跨应用程序重用代码时

HTTP模块自定义的事件,可以在Global文件中订阅,比如说Session_Start,这个其实就是订阅了Session模块的Start事件.

简单的讲就是这样子的.我在模块中定义了一个Event(事件),那我这个事件的处理函数是什么哪?我何时注册该事件?

答:比如说我自定义了一个模块类叫SessionModule,然后这个模块里面我自定义了一个事件叫Start,使用Session的名字在web.config中注册该模块

那么在Global.asax中声明一个名称为:Session_Start 这样子的函数,这样子就注册了模块注册名为Session的Start事件

处理函数就是刚才定义的名称为 Session_Start 的函数.

创建自定义HTTP模块的步骤

1、创建实现IHttpModule接口的类。

2、为Init方法编写一个处理程序。初始化方法应该初始化模块并订阅所需的任何应用程序事件。

3、为已经订阅的事件编写代码。

4、如果模块需要清理,还可选择实现Dispose方法。

5、在Web.config文件中注册模块.

请继续关注~~实现了自定义页眉和页脚的一个简单的HTTP模块

转载于:https://www.cnblogs.com/fromchaos/archive/2009/07/08/1519143.html

浅析ASP.NET HTTP Module相关推荐

  1. ASP.NET MVC Module

    ASP.NET MVC Module 前言 在ASP.NET中管道模型是怎么来实现的?在请求处理流程一文中大概的讲述了Http Module和HttpApplication之间的关系,而并没有涉及到H ...

  2. 浅析ASP.NET的Page.IsPostBack 属性

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

  3. 浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

  4. .NET Core开发日志——从ASP.NET Core Module到KestrelServer

    ASP.NET Core程序现在变得如同控制台(Console)程序一般,同样通过Main方法启动整个应用.而Main方法要做的事情很简单,创建一个WebHostBuilder类,调用其Build方法 ...

  5. 浅析Node模块中module.exports与exports的关系

    Node.js遵循CommonJS规范的模块机制,一个JS文件即被视为一个独立的模块.在模块内部可以通过2种方式导出模块: module.exports exports module.exports是 ...

  6. 浅析ASP.NET页面缓存的几点体会

    尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...

  7. 浅析ASP.NET应用ViewState技术

    如果你有在IE中查看当前浏览页面HTML源代码的习惯,你也许常会看到类似以下的代码片断: <input type="hidden" name="__VIEWSTAT ...

  8. 浅析ASP.NET回车提交事件[转]

    ASP.NET回车提交事件其实说到底并不是ASP.NET 的编程问题,却是关于html form 中的submit 按钮就是如何规划的具体讨论. 也可归于ASP.NET编程的一部分,那么ASP.NET ...

  9. 浅析Asp.net MVC 中Ajax的使用

    在ASP.NET MVC beta中我们可以使用Ajax.BeginForm, Ajax.ActionLink来进行Ajax调用,同样我们也可以使用一些支持Ajax 框架如jQuery来简化对ajax ...

  10. 浅析ASP.NET 2.0的用户密码加密机制

    摘要: 1 加Salt散列 2 ASP.NET 2.0 Membership中与密码散列有关的代码 声明:本文所罗列之源代码均通过Reflector取自.NET Framework类库,Anders ...

最新文章

  1. 我脑中飘来飘去的css魔幻属性
  2. 挑战独立开发项目能力___ITlanbao
  3. 基于1.3.3版本tooltip的datagrid单元格tip实现
  4. Java 动态代理机制分析及扩展
  5. 一次关于 Mysql 索引优化的思考
  6. 【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)
  7. void和void*
  8. html转word 时 字体颜色,【Web前端问题】文字大小和颜色随着热度改变如何做?...
  9. 数值计算方法(零)——运算的要求+基本算法
  10. java爱心效果代码来了
  11. Windows Phone能否第三极崛起
  12. 向jre中添加安全证书
  13. php 获取客户端真实ip_php获取客户端真实ip地址的三种方法
  14. 网页制作中PS图像处理的应用
  15. 股市潜规则 你经历过几个?(转)
  16. Android无限流量统计,无限流量套餐国内也有 但并没什么用
  17. Word文档中X的平方怎么打出来?
  18. 人工智能技术在教育领域中的应用
  19. 两个电脑文件如何同步
  20. 读《终身学习:10个你必须掌握的未来生存法则》整理

热门文章

  1. 风中的纸屑——阅读MDN中的HTML、CSS谈兼容(PC)
  2. GET POST 传值与接收案例
  3. SQL查询-将列转换成字符串(for xml path)
  4. [翻译]进化游戏的层次结构 - 用组件来重构你的游戏实体
  5. Portable SharpDevelop(PSD):便携的DotNet集成开发环境
  6. 多任务学习Multi-Task Learning
  7. 使用VSCode编写LaTeX
  8. 学生时代,代码要从 0 写起,拒绝拷贝!
  9. 百面机器学习—5.SVM要点总结
  10. 读书节第三日丨产品大咖荐读直播齐上阵,学院超级会员限时开抢!