[DNN学习所得]HttpModule到底是个什么东西

原创 2005年05月19日 18:58:00

  在学习DNN到UrlRewriteModule类时(UrlRewriteModule.vb中),发现这个类是由IHttpModule接口继承来的。一查MSDN知道了UrlRewriteModule原来是个HttpModule。那么HttpModule到底是个什么东西?有什么用?用了有什么好处?
  HttpModule这个东西我原来从来没有用到过(可见自己的知识面和.net的庞大功能有多么大的差别)。这次学习DNN让我有机会见到HttpModule,不能放过这个知识点的空缺。在查询了相关的资料以后终于算是对HttpModule有了初步的了解。

  HttpModule 是实现 IHttpModule 接口和处理事件的程序集。ASP.NET 包含一组可由应用程序使用的 HttpModule 模块。例如,ASP.NET 提供了 SessionStateModule 来向应用程序提供会话状态服务。可以创建自定义 HttpModule 以响应 ASP.NET 事件或用户事件。
编写 HttpModule 的一般过程为:
1、实现 IHttpModule 接口,如:

    Public Class UrlRewriteModule
        
Implements IHttpModule
    
End Class

2、处理 Init 方法并为所需事件进行注册,如:

    Public Sub Init(ByVal application As HttpApplication) Implements IHttpModule.Init
       
'初始化时为 HttpApplication 事件 BeginRequest 注册事件处理程序OnBeginRequest
       AddHandler application.BeginRequest, AddressOf Me.OnBeginRequest
    
End Sub

3、处理该事件,如:

    Public Sub OnBeginRequest(ByVal s As ObjectByVal e As EventArgs)
        
'代码略
    End Sub

4、如果必须进行清理,还可根据需要实现 Dispose 方法。

    Public Sub Dispose() Implements IHttpModule.Dispose
    
End Sub

5、在 Web.config 中注册该模块。 

    <!-- 在一个应用程序内配置 HTTP 模块 -->
    
<httpModules>
      
<add name="UrlRewrite" type="DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules.UrlRewrite" />
    
</httpModules>

  在原来要处理application.BeginRequest事件(发出信号表示新的请求时触发),一般都写在 Global.asax 里的Application_BeginRequest中,原来程序中BeginRequest事件中的处理并不多,代码量也很少,把BeginRequest事件的处理的代码都放到Global.asax中也没有什么问题。可是在DNN中BeginRequest要处理的事件很多,还可能有扩充的需求。而且将不同功能的事件处理,写到不同HttpModule中也能够使代码结构更加清晰。
  但是如果有多个HttpModule都包括application.BeginRequest那么程序的执行先后顺序又是怎样的呢?是不是先执行Global.asax 里的,然后按照Web.config中的顺序来呢?关于这一点还没有找到答案,希望知道的人能告知一声,谢谢!使用HttpModule还有什么更多的好处呢?也希望大家能指出,再次谢谢!

相关知识:
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconhandlingpublicevents.asp

在ASP.NET中实现Url Rewriting

更多相关内容>>

AJAX学习-到底是个什么东西

AJAX 是将咱们之前学到的HTML、CSS、XML、Js等web知识结合起来使用的一门技术,通过XMLHttpRequest对象实现异步的操作,可以在不重新加载整个页面的情况下,与服务器交换数据并更...

码住有需要再看 正则表达式到底是什么东西??

本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。  如何使用本教程 最重要的是——请给我30分钟,如果你没有使用...
  • lhq186
  • lhq186
  • 2016年09月02日 22:58
  • 587

深入理解Java虚拟机到底是什么东西

什么是Java虚拟机   作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我...

原理 zip文件到底是个什么东西

在日常 一个 ZIP 文件的普通格式 ----------------------     一个 ZIP 文件由三个部分组成:                  压缩源文件数据区+压缩源文件...

傅立叶变换--复数到底是个什么东西?

傅立叶变换--复数到底是个什么东西?

HTML 5到底是个什么东西

Html 5开始大热标志性的事件是Apple 前CEO Steve Jobs 公开炮轰Flash,并指出Flash在移动终端的不利因素,而且Html5将获得胜利。顿时it界,数字营销界,数字媒体界等相...

堆栈到底是个什么东西?

编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪...

delegate和protocol(协议与代理到底是个什么东西?)

protocol和delegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。   协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实...

正则表达式到底是什么东西??

本文目标 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表...
  • Trassion
  • Trassion
  • 2012年07月02日 14:01
  • 11782

我们大学学的面向对象到底是什么东西

但是现在想想呢,如今的我们还会在代码上钻研么,还会像是玩超级玛丽、玩魂斗罗一样的去看待打代码的人生吗?有一句话,叫做“梦想照进现实”,每个人都有梦想,每个人小时都想着“我长大后”“我以后”...
  • lachn
  • lachn
  • 2011年04月09日 23:35
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[DNN学习所得]HttpModule到底是个什么东西
举报原因:
原因补充:

(最多只允许输入30个字)